Тремор передних лап у кошки


Вопрос о том, почему дрожит кошка, волнует многих заводчиков. Это явление хоть и встречается часто, но вызывает беспокойство у заводчиков.

Дрожь (тремор) - это судорожное сокращение мышц животного, сотрясение или содрогание тела или его частей. Дрожь может появляться внезапно, распространяться как на все тело, так и на отдельные его части.

Не всегда тремор – признак патологии или серьезного заболевания. Часто его причина лежит на поверхности. Как правило, физиологические подергивания случаются у любой здоровой кошки и не должны вызывать беспокойства.

Существует также идиопатическая дрожь, то есть подрагивания животного, причины которого выяснить не удается.

Серьезного наблюдения и консультации специалиста требует патологический тремор, который не проходит быстро и сопровождается другими симптомами.

Причины дрожи у кошек

Дрожание может быть мелким и малозаметным, особенно у пушистых пород, но его легко ощутить, положив руку на животное. Подрагивания могут быть и крупными, заметными невооруженным глазом.

Для определения дрожи используют научный термин тремор. Тремор определяется как быстрые и ритмичные движения, которые вызываются сокращениями мышц. Дрожание можно классифицировать по нескольким признакам:

  • по скорости дрожание может быть быстрым и медленным;
  • по локализации выделяют тремор головы животного, конечностей, крупа и генерализованный тремор;
  • по тяжести принято выделять легкий тремор, который не мешает животному питаться, пить и вести активный образ жизни, тяжелый, в этом случае самостоятельное передвижение и прием пищи для кошки затруднены.

Подрагивания могут возникать в покое (тремор покоя) и исчезать при движении или при попытке совершить точное движение. Дрожать могут конечности, когда животное пытается удержать их в определенном положении.

Как говорилось выше, не вся дрожь – признак болезни. Причин для физиологической дрожи достаточно и все они являются непроизвольными ритмичными мышечными сокращениями, которые связаны с механизмами регулирования состояния животного относят к физиологической дрожи. Специалисты выделяют следующие причины физиологической дрожи:

  1. Холодовая дрожь - терморегуляционный механизм физической защиты тела животного от переохлаждения. Как только температура становится некомфортной и даже опасно низкой для животного, его тело начинает мелко дрожать. Это позволяет быстро обеспечить теплопродукцию и сохранить жизнь зверьку. Если питомец замерзает, то нужно либо одеть его, либо повысить температуру в помещении, где он содержится. Потому что этот механизм действенен до определенного предела. Кошка может переохладиться и заболеть.
  2. Эмоциональные переживания высокой степени (испуг, радость). Под влиянием пугающих кошку событий, ее организм, как и организм человека, выделяет определенные гормоны, под влиянием которых и начинается дрожь и озноб. Радость, когда живое существо переполняют эмоции, например, возвращение хозяина с работы могут вызывать у животного мелкий тремор. Животное подрагивает, когда лежит на коленях любимого хозяина и мурлычет.
  3. Некоторые специалисты утверждают, что у животного может быть легкая мелкая дрожь, которая вызывается рефлекторно при полном желудке зверька.
  4. Дрожь возбуждения, это дрожь охотника или сексуально возбужденного зверя. Кошки во время течки и коты в период спаривания могут дрожать в связи с обострением чувств и реакции нервной системы под влиянием гормонов. Некоторые специалисты считают, что будет правильным кастрировать (стерилизовать) животное, если возможности спаривания оно будет лишено.
  5. Сонный тремор. Часто заводчики отмечают подергивания питомца во время сна. Такой тремор не опасен, он говорит о максимальном расслаблении кошки.
  6. Дрожь в старческом возрасте. Замедление обмена веществ, нарушение кровоснабжения у пожилых кошек часто приводят к появлению непроизвольных судорожных движений в конечностях.

Но часто случается так, что дрожь говорит о нездоровье кота, о том, что ему требуется срочная медицинская помощь.

Такие патологические состояния могут быть вызваны как факторами внешней среды, так и патологиями отдельных систем организма.

Дрожь может наблюдаться не во всем теле. Часто тремор отмечается в лапах, подергиваться может только голова.

Причины, которые приводят к дрожанию животного, многочисленны.

Так, дрожь в конечностях домашнего любимца может вызывать герпесвирусная инфекция или ринотрахеит животного. Основные симптомы при этом недуге - гнойные выделения из носа и глаз, кашель, рвота, лихорадка.

Дрожь конечностей может быть спровоцирована глистами или циститом, тряся конечностями, кошка пытается уменьшить зуд или болевые ощущения при активности гельминтов или возникающий дискомфорт в процессе мочеиспускания.

Довольно много причин могут привести к систематическому или периодическому подергиванию головы животного, например:

  1. Частые подергивания могут быть признаком отодектоза или ушной чесотки. Кроме подергиваний, можно наблюдать, как животное часто чешет пораженное ухо, буквально погружая лапу в слуховой проход и травмируя ткани. При этом кошка может жалобно мяукать.
  2. Систематическое подергивание головой может быть признаком среднего отита, при этом ухо у кошки болит, и она не дает его трогать. А может быть свидетельством образования серной пробки.
  3. Подергивания головой могут говорить о печеночной недостаточности, остром нарушении работы дыхательной системы и даже почек. При нарушении работы внутренних органов заболевание протекает с характерной клинической картиной того или иного нарушения. Тремор же появляется уже на стадии отказа органа.
  4. Энцефалит, применение некоторых лекарственных средств, вестибулопатии, патологии мозжечка, черепно-мозговые травмы могут стать причиной тремора и даже судорог.

Дрожь крупа и генерализованный тремор появляется в результате поражения позвоночника (компрессионные переломы, опухоли, деформация межпозвоночных дисков, стеноз позвоночного канала). Эти патологии могут приводить к слабости нижних конечностей и дрожанию их при попытке животного встать на ноги. При дальнейшем развитии болезни наступает паралич.

Тремор может появится при болезни Лайма, или боррелиозе. Особенность такого тремора в том, что появляется он спустя несколько месяцев после укуса клеща.

Травма головы способна вызвать тремор всего тела. Зачастую помимо дрожи наблюдаются нарушения в координации движений. Если травма не опасная, то дрожь пройдет вместе с выздоровлением. Но при серьезных травмах такой тремор может остаться с животным на все дальнейшую жизнь.

Водянка головного мозга, или гидроцефалия, наблюдается чаще всего у сиамских котов. При этом котенок рождается с такой патологией, и, как правило, быстро погибает.

Слабость в результате перенесенного заболевания либо болевые ощущения могут приводить к дрожи конечностей животного или общей дрожи. Например, проглоченный острый предмет, повреждая желудок или кишечник, может заставлять животное жалобно мяукать, выгибать спину и дрожать.

Если головной мозг животного пострадал из-за гипоксии, то питомец может также наблюдать тремор в виде отдельных подергиваний или общей мелкой дрожи. Часто причиной гипоксии являются заболевания крови.

При токсоплазмозе кошка бывает вялой и апатичной. При этом по телу может наблюдаться мелкая дрожь.

Нервно-мышечные заболевания, дегенеративные неврологические патологии, дефицит миелина, обменные патологии и даже отравление токсинами (например, фосфорорганикой) могут вызывать крупную дрожь во всем теле животного.

Также периодические подергивания наблюдаются у ослабленных животных, которым не хватает питательных веществ и витаминов, прежде всего кальция и витаминов группы В. В этом случае необходимо срочно пересмотреть ежедневный рациона кошки, ввести в него дополнительно комплекс витаминов и микроэлементов.

Судороги могут наблюдаться у кошки во время родов. Это явление называют эклампсией. Тремор наблюдается в конечностях животного.

Симптоматическое лечение

Физиологическая дрожь лечения не требует. Такая дрожь не доставляет сильного дискомфорта коту. Он не теряет аппетит, не становится вялым, его настроение не портится. Чтобы помочь коту, его нужно содержать в комфортных для него микроклиматических условиях, уделять ему время, и тогда питомец будет подрагивать лишь от радости.

Часто люди пытаются устранить тремор с помощью препаратов, которые предназначены для человека. Например, дают ему внутрь сильные успокоительные, спазмолитики. Такое самолечение недопустимо! Во-первых, состояние животного может стать гораздо хуже. Во-вторых, можно смазать клиническую картину, если дрожь вызвана каким-то заболеванием. В-третьих, можно неверно рассчитать дозировку, дать лекарство, которое кошачьим организмом не переносится, и тем самым, еще больше усугубить положение (к болезни добавляется общая интоксикация).

Если дрожь не проходит, появляются новые симптомы, то наиболее верное решение – показать кота ветеринару.

Если дрожь повторяется регулярно или есть еще какие-либо тревожащие признаки, нужно обязательно показать своего питомца врачу. Он назначит грамотное лечение. В некоторых случаях кошке достаточно минимизировать активность на некоторое время и дать легкое успокоительное, но может потребоваться и серьезная терапия и даже операция.

Симптоматическая диета и процедуры

Какой бы не была причина тремора, главное для заводчика – обеспечить качественный уход. Важно кормить кота сбалансированным кормом, ежегодно проводить курс витаминизации и раз в несколько месяцев проводить профилактическую чистку от гельминтов.

Если тремор вызван переохлаждением, животное необходимо согреть. При стрессе и эмоциональных потрясениях успокоить легкими седативными препаратами – валерьянкой и пустырником.

Физиологическая дрожь устраняется тактильным контактом с человеком. Поэтому важно погладить кота, почесать его, дать ему понежиться возле хозяина.

Видео


  1. Причины истинного тремора
  2. Лечение
  3. Домашний уход


Дрожь (тремор) — это частые сокращения мышц, которые сохраняются в бодрствующем состоянии. Истинная дрожь прекращается во время сна.
Тремор у кошек не всегда связан с патологией, бывает так называемая физиологическая дрожь:

  1. При переохлаждении
  2. При эмоциональной нагрузке
  3. При сильной мышечной нагрузке/напряжении

Есть множество причин появления тремора у кошек в зависимости от того, какая часть тела поражена.

Тремор головы

  1. Аномалии мозжечка
  2. Идиопатическая (причина неизвестна)
  3. Генетические причины
  4. Воспалительные процессы (энцефалит)
  5. Травма
  6. Применение некоторых препаратов
  7. Вестибулярные заболевания

Тремор задней части тела

  1. Слабость или боль.
  2. Заболевание обмена веществ (почечная недостаточность, низкий уровень сахара в крови).
  3. Компрессионные поражения позвоночника (опухоли, сужение просвета позвоночного канала).
  4. Нервно-мышечные заболевания.

Распространенные причины дрожи

  1. Токсические (органофосфаты, микотоксины).
  2. Гипомиелинизация (болезни, при которых уменьшается или отсутствует миелиновая оболочка нервов).
  3. Дегенеративные неврологические заболевания.

Диагностика

Для первоначального сбора анамнеза и забора крови можно вызвать ветеринара на дом. Развернутый анализ крови, биохимический профиль и анализ мочи рекомендуется делать во всех случаях. Важно исключить метаболические расстройства, такие как гипогликемия (низкий уровень сахара в крови) или заболевания почек.

Обычно рентгенографическое исследование грудной и брюшной полостей не выявляет никаких патологий, но оно должно быть проведено, как и рентгенография позвоночника.

Миелография (рентгенографическое исследование позвоночника с использованием красителя) может быть рекомендована для оценки наличия опухоли или болезни межпозвонковых дисков.

КТ или МРТ помогут обнаружить структурные изменения головного мозга и/или позвоночника.

Пункция спинномозговой жидкости может подтвердить энцефалит.

Электромиография поможет в диагностике нервно-мышечных расстройств.

Как вылечить тремор у кошки? Необходимо выявить и устранить первопричину данного состояния, если это возможно. Также рекомендуется избегать волнений и повышенной активности, так как они могут усугубить дрожь, поэтому для последующих осмотров лучше вызывать ветеринарного специалиста на дом. При болезни межпозвонковых дисков иногда требуется хирургическое вмешательство.

Следует избегать воздействия различных токсинов на кошку. При подозрении на отравление немедленно обратитесь к ветеринарному врачу или вызовите врача на дом. Животные с общей дрожью часто теряют вес. Контролируйте вес вашего питомца и внесите соответствующие изменения в рацион.

Необходимо строго придерживаться назначений лечащего врача.

Когда у кота по телу внезапно пробегает дрожь, это настораживает и даже иногда пугает владельцев. Такое явление называется тремором, оно обусловлено непроизвольным сокращением одной или всех групп мышц. Существуют физиологические и патологические причины его возникновения, которые может точно установить только ветеринарный специалист. Но чтобы вовремя оказать помощь питомцу, хозяин должен знать причины, почему дрожит кошка.


Что такое тремор у кошек

Тремор у кошек представляет собой судорожное сокращение мускулатуры тела животного, которое визуально выражается в виде мелкой дрожи. Иногда у кошки дрожит все тело, но могут трястись и отдельные его участки. Непроизвольное сокращение мускулатуры, которое называют тремором, также может возникать в состоянии полного покоя, указывая на максимальное расслабление всех групп мышц. Однако дрожание, часто говорит о том, что у кошки возникли серьезные проблемы со здоровьем и животное требует срочного лечения.

Важно! Если длинношерстные кошки трясутся мелкой дрожью, то ощутить это можно, только если приложить руку к животному. Но иногда тремор хорошо заметен и сопровождается другими тревожными симптомами.

Физиологические причины дрожи

Иногда кот дрожит по причине таких внешних факторов, как резкая смена или снижение температуры окружающего пространства. К физиологическим факторам тремора также относится стрессовое состояние, половое возбуждение, глубокий сон или некоторые рефлекторные процессы в организме животного.

Часто можно заметить, что кошка дрожит после купания или длительного пребывания на улице в холодный день. Такой тремор является механизмом терморегуляции и не позволяет животному замерзнуть в течение продолжительного промежутка времени.

Изнеженных домашних кошек бьет озноб даже при незначительном снижении температуры окружающего воздуха, в то время как закаленный частыми прогулками питомец может длительное время находиться на улице даже в сильные морозы. Такие индивидуальные особенности организма своих кошек владельцы должны учитывать, чтобы определить продолжительность прогулки, так как переохлаждение легко приводит к развитию простудных заболеваний и воспалительных патологий.

Важно! Даже если в помещении тепло, после купания шерсть животного необходимо тщательно высушить. Также важно обеспечить отсутствие сквозняков и не разрешать кошке лежать на холодной поверхности.

Кот может дрожать, как будто ему холодно, при сильном эмоциональном возбуждении позитивного или негативного характера. Как при испуге, так и во время большой радости в кровь животного поступает большое количество определенных гормонов, которые провоцируют мышечную дрожь.

По этому признаку можно определить настроение питомца. Например, нервничая, кот весь трясется, будто замерз, выгибает спину, шипит или громко мяукает. Иногда готовность к атаке выражается только в дрожании поднятого вверх хвоста. В тоже время, сидя на коленях у любимого хозяина, животное может слегка дрожать и мурлыкать при этом от удовольствия.


В период половой охоты у кошек и котов обостряются все чувства. При отсутствии полового партнера животные постоянно нервничают, стремятся вырваться из дома, могут проявлять агрессию или чрезмерную навязчивость. Кошку трясет от мощного выброса половых гормонов в кровь. Такое состояние приводит не только к нарушениям психики животного, но и провоцирует развитие злокачественных опухолей репродуктивных органов и молочных желез. Поэтому самым гуманным способом избавления от страданий кошек и котов, которые не принимают участия в племенном деле, является кастрация.

У некоторых кошек тремор может возникать рефлекторно после употребления пищи. Особенно часто можно заметить, как сытый котенок дрожит во сне и при этом не проявляет признаков беспокойства.

Важно! Если кот трясется во сне, тщетно пытается согреть замерзшие конечности, но при этом в помещении достаточно комфортно и тепло, то следует измерить питомцу температуру. Ее резкое падение свидетельствует об очень серьезной патологии, которая несет угрозу жизни.

Патологические причины тремора

Причиной того, почему кот дрожит, будто ему холодно, хотя он находится дома в комфортных условиях, могут быть патологические факторы. При этом тремор часто сопровождается следующими клиническими симптомами:

  • светобоязнь;
  • малоподвижность и вялость;
  • агрессия;
  • болевой синдром;
  • повышение температурных показателей тела;
  • диарея или запор;
  • рвота;
  • гнойные выделения из носовой полости или глаз;
  • нарушение координации движений.

Часто о наличии патологии у котика свидетельствует дрожь отдельных частей тела или групп мышц, когда трясется только голова, передние или задние конечности.


Важно! Тремор необходимо отличать от судорог, которые всегда сопровождаются болевым синдромом. У котят до 5-6 месячного возраста, когда у них происходит интенсивное развитие центральной нервной системы, судороги могут носить физиологический характер. В остальных случаях судороги свидетельствуют о наличии серьезных нарушений функций головного мозга, обусловленных инфекционными или травматическими факторами.

Существует много патологических причин того, почему дрожат котята и взрослые особи.

Дефицит кальция и витаминов группы B в организме провоцирует дегенеративные процессы в мышечной ткани у кошек.

Причиной того, что котенок дрожит, может стать инфекционный ринотрахеит. Помимо тремора данное заболевание сопровождается кашлем, гнойными выделениями из глаз и носа, значительным повышением температуры тела и расстройствами пищеварения.

При развитии глистных инвазий, когда гельминты забивают кишечник питомца и выделяют огромное количество токсичных продуктов своей жизнедеятельности, у котенка наблюдаются явления интоксикации, он становится вялым и дрожит всем телом.

Ответная реакция организма на введение общего наркоза. Если кошка трясется после операции более 6 часов, то это может указывать на развитие внутреннего кровотечения. В таком случае необходимо срочное врачебное вмешательство.

Дрожание тела у кошек провоцируют острые воспалительные процессы в органах мочеполовой системы и приступы мочекаменной болезни.

Отит, вызванный ушным клещом или другими факторами, приводит к частым подергиваниям головы. Кошка чешет больное ухо, бьет по нему, наклоняет голову в сторону пораженного органа. В результате в области ушных раковин появляются расчесы и гематомы. Отсутствие лечения приводит к переходу воспаления на внутреннее ухо и мозговые оболочки, что провоцирует летальный исход.


Во время острой печеночной недостаточности у кошки появляется рвота и понос, на начальном этапе она слегка подрагивает, а на стадии отказа пораженного органа — дрожит всем телом.

Тремор головы может указывать на черепно-мозговые травмы, энцефалит, поражения мозжечка, передозировку лекарственных препаратов.

Если котенок плохо ходит и при этом у него трясется все тело, то это может указывать на травмы позвоночного столба, вызванные врожденными патологиями, сдавливанием или ушибами. У взрослых кошек такие симптомы являются результатами не только травм, но и развития опухолей или деформации межпозвоночных дисков.

Если котенок внезапно становится вялым, начинает дрожать сначала слегка, а потом с нарастающей амплитудой, то такой тремор и вялость чаще всего указывают на отравление. Если не доставить малыша клинику, то у него развиваются судороги и наступает летальный исход.

Причиной тремора может выступать боррелиоз, который возникает после укуса клеща. Коварство болезни заключается в длительном латентном периоде, когда клинические признаки могут появиться через несколько месяцев после инфицирования.

Тремор в сочетании с вялостью может быть одним из признаков токсоплазмоза у кошек.

Если котенок плохо ходит, трясется, кружится на месте, плохо ориентируется в пространстве – это может свидетельствовать о наличии у него такой серьезной врожденной патологии, как гидроцефалия.

Тремор конечностей, переходящий в судороги, может возникнуть у кошки во время родов или в течение недели после них. Такое явление называется эклампсией. Оно свидетельствует об острой нехватке кальция в организме животного. При отсутствии немедленного лечения у кошки развиваются судороги, которые могут привести к летальному исходу.

Когда необходимо обратиться к врачу

Если тремор у кошки сопровождается повышением температуры, расстройством пищеварения или болевым синдромом, животное необходимо срочно доставить в клинику или вызвать ветеринарного специалиста на дом.

Также немедленной госпитализации требует кошка, у которой дрожание переходит в судороги или приступы эпилепсии.

Иногда владелец не может понять, почему котенка или взрослую кошку сильно трясет, и при этом она выгибает спину, тихонько мяукает, пытается срыгнуть. Такие признаки обычно указывают на заглатывание инородного предмета, который вызывает боль или дискомфорт. В этом случае животное можно спасти только в условиях клиники, если своевременно извлечь предмет хирургическим путем.


Диагностика

Решить, что делать, если котенок или взрослая кошка дрожит, можно только после определения причин возникновения тремора. Сделать это самостоятельно в домашних условиях в большинстве случаев невозможно. Однако нужно внимательно следить за поведением животного, чтобы ответить ветеринарному специалисту на следующие вопросы:

  • кратность повторений и продолжительность приступов в течение суток;
  • наличие сопровождающих симптомов;
  • события, предшествующие появлению тремора;
  • сроки последней дегельминтизации и вакцинации.

Также необходимо вспомнить, кусал ли кошку клещ в течение года.

Для постановки точного диагноза могут быть назначены следующие исследования:

  • общий и клинический анализ крови;
  • анализ мочи;
  • анализ кала на наличие гельминтов;
  • рентгенография головы, позвоночника, грудной и брюшной полости;
  • МРТ или КТ головного мозга;
  • миелография – для выявления опухолей позвоночника и патологий межпозвоночных дисков;
  • электромиография.

Для подтверждения энцефалита могут взять пункцию спинномозговой жидкости.


Лечение

Физиологический тремор у кошек не требует врачебного вмешательства. Для его устранения достаточно минимизировать стрессовые факторы, обеспечить животному комфортные условия содержания и полноценное сбалансированное питание.

При регулярных приступах дрожи животное необходимо показать ветеринарному специалисту.

Важно! Нельзя самостоятельно снимать приступы тремора у кошек с помощью успокоительных препаратов или спазмолитиков, предназначенных для людей. Это может спровоцировать осложнения или смазать клиническую картину заболевания, что значительно затруднит постановку диагноза.

Лечение патологического тремора у кошек заключается в устранении причины его возникновения. Оно может выражаться в назначении седативных средств, антигельминтных препаратов. При наличии инфекционных процессов проводится антимикробная и симптоматическая терапия. В случае наличия новообразований, серьезных патологий нервной или опорно-двигательной системы, назначается хирургическое вмешательство.

Если владелец заметил у своей кошки нервные подергивания тела, нужно пройти полный курс обследования в клинике. Это поможет своевременно выявить патологию и начать соответствующее лечение. В случае если дрожь является следствием неправильного питания или ухода, ветеринарный врач укажет на недостатки и внесет коррективы, которые в дальнейшем помогут избежать появления тремора.

* @license GNU General Public License, version 2 (GPL-2.0) * * For full copyright and license information, please see * the docs/CREDITS.txt file. * */ /** * @ignore */ define('IN_PHPBB', true); $phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './'; $phpEx = substr(strrchr(__FILE__, '.'), 1); include($phpbb_root_path . 'common.' . $phpEx); include($phpbb_root_path . 'includes/functions_display.' . $phpEx); include($phpbb_root_path . 'includes/bbcode.' . $phpEx); include($phpbb_root_path . 'includes/functions_user.' . $phpEx); // Start session management $user->session_begin(); $auth->acl($user->data); // Initial var setup $forum_id = $request->variable('f', 0); $topic_id = $request->variable('t', 0); $post_id = $request->variable('p', 0); $voted_id = $request->variable('vote_id', array('' => 0)); $voted_id = (count($voted_id) > 1) ? array_unique($voted_id) : $voted_id; $start = $request->variable('start', 0); $view = $request->variable('view', ''); $default_sort_days = (!empty($user->data['user_post_show_days'])) ? $user->data['user_post_show_days'] : 0; $default_sort_key = (!empty($user->data['user_post_sortby_type'])) ? $user->data['user_post_sortby_type'] : 't'; $default_sort_dir = (!empty($user->data['user_post_sortby_dir'])) ? $user->data['user_post_sortby_dir'] : 'a'; $sort_days = $request->variable('st', $default_sort_days); $sort_key = $request->variable('sk', $default_sort_key); $sort_dir = $request->variable('sd', $default_sort_dir); $update = $request->variable('update', false); /* @var $pagination \phpbb\pagination */ $pagination = $phpbb_container->get('pagination'); $s_can_vote = false; /** * @todo normalize? */ $hilit_words = $request->variable('hilit', '', true); // Do we have a topic or post id? if (!$topic_id && !$post_id) < trigger_error('NO_TOPIC'); >/* @var $phpbb_content_visibility \phpbb\content_visibility */ $phpbb_content_visibility = $phpbb_container->get('content.visibility'); // Find topic id if user requested a newer or older topic if ($view && !$post_id) < if (!$forum_id) < $sql = 'SELECT forum_id FROM ' . TOPICS_TABLE . " WHERE topic_id = $topic_id"; $result = $db->sql_query($sql); $forum_id = (int) $db->sql_fetchfield('forum_id'); $db->sql_freeresult($result); if (!$forum_id) < trigger_error('NO_TOPIC'); >> if ($view == 'unread') < // Get topic tracking info $topic_tracking_info = get_complete_topic_tracking($forum_id, $topic_id); $topic_last_read = (isset($topic_tracking_info[$topic_id])) ? $topic_tracking_info[$topic_id] : 0; $sql = 'SELECT post_id, topic_id, forum_id FROM ' . POSTS_TABLE . " WHERE topic_id = $topic_id AND " . $phpbb_content_visibility->get_visibility_sql('post', $forum_id) . " AND post_time > $topic_last_read AND forum_id = $forum_id ORDER BY post_time ASC, post_id ASC"; $result = $db->sql_query_limit($sql, 1); $row = $db->sql_fetchrow($result); $db->sql_freeresult($result); if (!$row) < $sql = 'SELECT topic_last_post_id as post_id, topic_id, forum_id FROM ' . TOPICS_TABLE . ' WHERE topic_id = ' . $topic_id; $result = $db->sql_query($sql); $row = $db->sql_fetchrow($result); $db->sql_freeresult($result); > if (!$row) < // Setup user environment so we can process lang string $user->setup('viewtopic'); trigger_error('NO_TOPIC'); > $post_id = $row['post_id']; $topic_id = $row['topic_id']; > else if ($view == 'next' || $view == 'previous') < $sql_condition = ($view == 'next') ? '>' : ' sql_query($sql); $row = $db->sql_fetchrow($result); $db->sql_freeresult($result); if (!$row) < $user->setup('viewtopic'); // OK, the topic doesn't exist. This error message is not helpful, but technically correct. trigger_error(($view == 'next') ? 'NO_NEWER_TOPICS' : 'NO_OLDER_TOPICS'); > else < $sql = 'SELECT topic_id, forum_id FROM ' . TOPICS_TABLE . ' WHERE forum_id = ' . $row['forum_id'] . " AND topic_moved_id = 0 AND topic_last_post_time $sql_condition <$row['topic_last_post_time']>AND " . $phpbb_content_visibility->get_visibility_sql('topic', $row['forum_id']) . " ORDER BY topic_last_post_time $sql_ordering, topic_last_post_id $sql_ordering"; $result = $db->sql_query_limit($sql, 1); $row = $db->sql_fetchrow($result); $db->sql_freeresult($result); if (!$row) < $sql = 'SELECT forum_style FROM ' . FORUMS_TABLE . " WHERE forum_id = $forum_id"; $result = $db->sql_query($sql); $forum_style = (int) $db->sql_fetchfield('forum_style'); $db->sql_freeresult($result); $user->setup('viewtopic', $forum_style); trigger_error(($view == 'next') ? 'NO_NEWER_TOPICS' : 'NO_OLDER_TOPICS'); > else < $topic_id = $row['topic_id']; $forum_id = $row['forum_id']; >> > if (isset($row) && $row['forum_id']) < $forum_id = $row['forum_id']; >> // This rather complex gaggle of code handles querying for topics but // also allows for direct linking to a post (and the calculation of which // page the post is on and the correct display of viewtopic) $sql_array = array( 'SELECT' => 't.*, f.*', 'FROM' => array(FORUMS_TABLE => 'f'), ); // The FROM-Order is quite important here, else t.* columns can not be correctly bound. if ($post_id) < $sql_array['SELECT'] .= ', p.post_visibility, p.post_time, p.post_id'; $sql_array['FROM'][POSTS_TABLE] = 'p'; >// Topics table need to be the last in the chain $sql_array['FROM'][TOPICS_TABLE] = 't'; if ($user->data['is_registered']) < $sql_array['SELECT'] .= ', tw.notify_status'; $sql_array['LEFT_JOIN'] = array(); $sql_array['LEFT_JOIN'][] = array( 'FROM' =>array(TOPICS_WATCH_TABLE => 'tw'), 'ON' => 'tw.user_id = ' . $user->data['user_id'] . ' AND t.topic_id = tw.topic_id' ); if ($config['allow_bookmarks']) < $sql_array['SELECT'] .= ', bm.topic_id as bookmarked'; $sql_array['LEFT_JOIN'][] = array( 'FROM' =>array(BOOKMARKS_TABLE => 'bm'), 'ON' => 'bm.user_id = ' . $user->data['user_id'] . ' AND t.topic_id = bm.topic_id' ); > if ($config['load_db_lastread']) < $sql_array['SELECT'] .= ', tt.mark_time, ft.mark_time as forum_mark_time'; $sql_array['LEFT_JOIN'][] = array( 'FROM' =>array(TOPICS_TRACK_TABLE => 'tt'), 'ON' => 'tt.user_id = ' . $user->data['user_id'] . ' AND t.topic_id = tt.topic_id' ); $sql_array['LEFT_JOIN'][] = array( 'FROM' => array(FORUMS_TRACK_TABLE => 'ft'), 'ON' => 'ft.user_id = ' . $user->data['user_id'] . ' AND t.forum_id = ft.forum_id' ); > > if (!$post_id) < $sql_array['WHERE'] = "t.topic_id = $topic_id"; >else < $sql_array['WHERE'] = "p.post_id = $post_id AND t.topic_id = p.topic_id"; >$sql_array['WHERE'] .= ' AND f.forum_id = t.forum_id'; $sql = $db->sql_build_query('SELECT', $sql_array); $result = $db->sql_query($sql); $topic_data = $db->sql_fetchrow($result); $db->sql_freeresult($result); // link to unapproved post or incorrect link if (!$topic_data) < // If post_id was submitted, we try at least to display the topic as a last resort. if ($post_id && $topic_id) < redirect(append_sid("<$phpbb_root_path>viewtopic.$phpEx", "t=$topic_id" . (($forum_id) ? "&f=$forum_id" : ''))); > trigger_error('NO_TOPIC'); > $forum_id = (int) $topic_data['forum_id']; /** * Modify the forum ID to handle the correct display of viewtopic if needed * * @event core.viewtopic_modify_forum_id * @var string forum_id forum ID * @var array topic_data array of topic's data * @since 3.2.5-RC1 */ $vars = array( 'forum_id', 'topic_data', ); extract($phpbb_dispatcher->trigger_event('core.viewtopic_modify_forum_id', compact($vars))); // If the request is missing the f parameter, the forum id in the user session data is 0 at the moment. // Let's fix that now so that the user can't hide from the forum's Who Is Online list. $user->page['forum'] = $forum_id; // Now we know the forum_id and can check the permissions if (!$phpbb_content_visibility->is_visible('topic', $forum_id, $topic_data)) < trigger_error('NO_TOPIC'); >// This is for determining where we are (page) if ($post_id) < // are we where we are supposed to be? if (($topic_data['post_visibility'] == ITEM_UNAPPROVED || $topic_data['post_visibility'] == ITEM_REAPPROVE) && !$auth->acl_get('m_approve', $topic_data['forum_id'])) < // If post_id was submitted, we try at least to display the topic as a last resort. if ($topic_id) < redirect(append_sid("<$phpbb_root_path>viewtopic.$phpEx", "t=$topic_id" . (($forum_id) ? "&f=$forum_id" : ''))); > trigger_error('NO_TOPIC'); > if ($post_id == $topic_data['topic_first_post_id'] || $post_id == $topic_data['topic_last_post_id']) < $check_sort = ($post_id == $topic_data['topic_first_post_id']) ? 'd' : 'a'; if ($sort_dir == $check_sort) < $topic_data['prev_posts'] = $phpbb_content_visibility->get_count('topic_posts', $topic_data, $forum_id) - 1; > else < $topic_data['prev_posts'] = 0; >> else < $sql = 'SELECT COUNT(p.post_id) AS prev_posts FROM ' . POSTS_TABLE . " p WHERE p.topic_id = <$topic_data['topic_id']>AND " . $phpbb_content_visibility->get_visibility_sql('post', $forum_id, 'p.'); if ($sort_dir == 'd') < $sql .= " AND (p.post_time > <$topic_data['post_time']>OR (p.post_time = <$topic_data['post_time']>AND p.post_id >= <$topic_data['post_id']>))"; > else < $sql .= " AND (p.post_time sql_query($sql); $row = $db->sql_fetchrow($result); $db->sql_freeresult($result); $topic_data['prev_posts'] = $row['prev_posts'] - 1; > > $topic_id = (int) $topic_data['topic_id']; $topic_replies = $phpbb_content_visibility->get_count('topic_posts', $topic_data, $forum_id) - 1; // Check sticky/announcement/global time limit if (($topic_data['topic_type'] != POST_NORMAL) && $topic_data['topic_time_limit'] && ($topic_data['topic_time'] + $topic_data['topic_time_limit']) sql_query($sql); $topic_data['topic_type'] = POST_NORMAL; $topic_data['topic_time_limit'] = 0; > // Setup look and feel $user->setup('viewtopic', $topic_data['forum_style']); if ($view == 'print' && !$auth->acl_get('f_print', $forum_id)) < send_status_line(403, 'Forbidden'); trigger_error('NO_AUTH_PRINT_TOPIC'); >$overrides_f_read_check = false; $overrides_forum_password_check = false; $topic_tracking_info = isset($topic_tracking_info) ? $topic_tracking_info : null; /** * Event to apply extra permissions and to override original phpBB's f_read permission and forum password check * on viewtopic access * * @event core.viewtopic_before_f_read_check * @var int forum_id The forum id from where the topic belongs * @var int topic_id The id of the topic the user tries to access * @var int post_id The id of the post the user tries to start viewing at. * It may be 0 for none given. * @var array topic_data All the information from the topic and forum tables for this topic * It includes posts information if post_id is not 0 * @var bool overrides_f_read_check Set true to remove f_read check afterwards * @var bool overrides_forum_password_check Set true to remove forum_password check afterwards * @var array topic_tracking_info Information upon calling get_topic_tracking() * Set it to NULL to allow auto-filling later. * Set it to an array to override original data. * @since 3.1.3-RC1 */ $vars = array( 'forum_id', 'topic_id', 'post_id', 'topic_data', 'overrides_f_read_check', 'overrides_forum_password_check', 'topic_tracking_info', ); extract($phpbb_dispatcher->trigger_event('core.viewtopic_before_f_read_check', compact($vars))); // Start auth check if (!$overrides_f_read_check && !$auth->acl_get('f_read', $forum_id)) < if ($user->data['user_id'] != ANONYMOUS) < send_status_line(403, 'Forbidden'); trigger_error('SORRY_AUTH_READ'); >login_box('', $user->lang['LOGIN_VIEWFORUM']); > // Forum is passworded . check whether access has been granted to this // user this session, if not show login box if (!$overrides_forum_password_check && $topic_data['forum_password']) < login_forum_box($topic_data); >// Redirect to login upon emailed notification links if user is not logged in. if (isset($_GET['e']) && $user->data['user_id'] == ANONYMOUS) < login_box(build_url('e') . '#unread', $user->lang['LOGIN_NOTIFY_TOPIC']); > // What is start equal to? if ($post_id) < $start = floor(($topic_data['prev_posts']) / $config['posts_per_page']) * $config['posts_per_page']; >// Get topic tracking info if (!isset($topic_tracking_info)) < $topic_tracking_info = array(); // Get topic tracking info if ($config['load_db_lastread'] && $user->data['is_registered']) < $tmp_topic_data = array($topic_id =>$topic_data); $topic_tracking_info = get_topic_tracking($forum_id, $topic_id, $tmp_topic_data, array($forum_id => $topic_data['forum_mark_time'])); unset($tmp_topic_data); > else if ($config['load_anon_lastread'] || $user->data['is_registered']) < $topic_tracking_info = get_complete_topic_tracking($forum_id, $topic_id); >> // Post ordering options $limit_days = array(0 => $user->lang['ALL_POSTS'], 1 => $user->lang['1_DAY'], 7 => $user->lang['7_DAYS'], 14 => $user->lang['2_WEEKS'], 30 => $user->lang['1_MONTH'], 90 => $user->lang['3_MONTHS'], 180 => $user->lang['6_MONTHS'], 365 => $user->lang['1_YEAR']); $sort_by_text = array('a' => $user->lang['AUTHOR'], 't' => $user->lang['POST_TIME'], 's' => $user->lang['SUBJECT']); $sort_by_sql = array('a' => array('u.username_clean', 'p.post_id'), 't' => array('p.post_time', 'p.post_id'), 's' => array('p.post_subject', 'p.post_id')); $join_user_sql = array('a' => true, 't' => false, 's' => false); $s_limit_days = $s_sort_key = $s_sort_dir = $u_sort_param = ''; /** * Event to add new sorting options * * @event core.viewtopic_gen_sort_selects_before * @var array limit_days Limit results by time * @var array sort_by_text Language strings for sorting options * @var array sort_by_sql SQL conditions for sorting options * @var array join_user_sql SQL joins required for sorting options * @var int sort_days User selected sort days * @var string sort_key User selected sort key * @var string sort_dir User selected sort direction * @var string s_limit_days Initial value of limit days selectbox * @var string s_sort_key Initial value of sort key selectbox * @var string s_sort_dir Initial value of sort direction selectbox * @var string u_sort_param Initial value of sorting form action * @since 3.2.8-RC1 */ $vars = array( 'limit_days', 'sort_by_text', 'sort_by_sql', 'join_user_sql', 'sort_days', 'sort_key', 'sort_dir', 's_limit_days', 's_sort_key', 's_sort_dir', 'u_sort_param', ); extract($phpbb_dispatcher->trigger_event('core.viewtopic_gen_sort_selects_before', compact($vars))); gen_sort_selects($limit_days, $sort_by_text, $sort_days, $sort_key, $sort_dir, $s_limit_days, $s_sort_key, $s_sort_dir, $u_sort_param, $default_sort_days, $default_sort_key, $default_sort_dir); // Obtain correct post count and ordering SQL if user has // requested anything different if ($sort_days) < $min_post_time = time() - ($sort_days * 86400); $sql = 'SELECT COUNT(post_id) AS num_posts FROM ' . POSTS_TABLE . " WHERE topic_id = $topic_id AND post_time >= $min_post_time AND " . $phpbb_content_visibility->get_visibility_sql('post', $forum_id); $result = $db->sql_query($sql); $total_posts = (int) $db->sql_fetchfield('num_posts'); $db->sql_freeresult($result); $limit_posts_time = "AND p.post_time >= $min_post_time "; if (isset($_POST['sort'])) < $start = 0; >> else < $total_posts = $topic_replies + 1; $limit_posts_time = ''; >// Was a highlight request part of the URI? $highlight_match = $highlight = ''; if ($hilit_words) < $highlight_match = phpbb_clean_search_string($hilit_words); $highlight = urlencode($highlight_match); $highlight_match = str_replace('\*', '\w+?', preg_quote($highlight_match, '#')); $highlight_match = preg_replace('#(? validate_start($start, $config['posts_per_page'], $total_posts); // General Viewtopic URL for return links $viewtopic_url = append_sid("<$phpbb_root_path>viewtopic.$phpEx", "f=$forum_id&t=$topic_id" . (($start == 0) ? '' : "&start=$start") . ((strlen($u_sort_param)) ? "&$u_sort_param" : '') . (($highlight_match) ? "&hilit=$highlight" : '')); // Are we watching this topic? $s_watching_topic = array( 'link' => '', 'link_toggle' => '', 'title' => '', 'title_toggle' => '', 'is_watching' => false, ); if ($config['allow_topic_notify']) < $notify_status = (isset($topic_data['notify_status'])) ? $topic_data['notify_status'] : null; watch_topic_forum('topic', $s_watching_topic, $user->data['user_id'], $forum_id, $topic_id, $notify_status, $start, $topic_data['topic_title']); // Reset forum notification if forum notify is set if ($config['allow_forum_notify'] && $auth->acl_get('f_subscribe', $forum_id)) < $s_watching_forum = $s_watching_topic; watch_topic_forum('forum', $s_watching_forum, $user->data['user_id'], $forum_id, 0); > > /** * Event to modify highlight. * * @event core.viewtopic_highlight_modify * @var string highlight String to be highlighted * @var string highlight_match Highlight string to be used in preg_replace * @var array topic_data Topic data * @var int start Pagination start * @var int total_posts Number of posts * @var string viewtopic_url Current viewtopic URL * @since 3.1.11-RC1 */ $vars = array( 'highlight', 'highlight_match', 'topic_data', 'start', 'total_posts', 'viewtopic_url', ); extract($phpbb_dispatcher->trigger_event('core.viewtopic_highlight_modify', compact($vars))); // Bookmarks if ($config['allow_bookmarks'] && $user->data['is_registered'] && $request->variable('bookmark', 0)) < if (check_link_hash($request->variable('hash', ''), "topic_$topic_id")) < if (!$topic_data['bookmarked']) < $sql = 'INSERT INTO ' . BOOKMARKS_TABLE . ' ' . $db->sql_build_array('INSERT', array( 'user_id' => $user->data['user_id'], 'topic_id' => $topic_id, )); $db->sql_query($sql); > else < $sql = 'DELETE FROM ' . BOOKMARKS_TABLE . " WHERE user_id = <$user->data['user_id']> AND topic_id = $topic_id"; $db->sql_query($sql); > $message = (($topic_data['bookmarked']) ? $user->lang['BOOKMARK_REMOVED'] : $user->lang['BOOKMARK_ADDED']); if (!$request->is_ajax()) < $message .= '

' . $user->lang('RETURN_TOPIC', '', ''); > > else < $message = $user->lang['BOOKMARK_ERR']; if (!$request->is_ajax()) < $message .= '

' . sprintf($user->lang['RETURN_TOPIC'], '', ''); trigger_error($message); > foreach ($voted_id as $option) < if (in_array($option, $cur_voted_id)) < continue; >$sql = 'UPDATE ' . POLL_OPTIONS_TABLE . ' SET poll_option_total = poll_option_total + 1 WHERE poll_option_id = ' . (int) $option . ' AND topic_id = ' . (int) $topic_id; $db->sql_query($sql); $vote_counts[$option]++; if ($user->data['is_registered']) < $sql_ary = array( 'topic_id' =>(int) $topic_id, 'poll_option_id' => (int) $option, 'vote_user_id' => (int) $user->data['user_id'], 'vote_user_ip' => (string) $user->ip, ); $sql = 'INSERT INTO ' . POLL_VOTES_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary); $db->sql_query($sql); > > foreach ($cur_voted_id as $option) < if (!in_array($option, $voted_id)) < $sql = 'UPDATE ' . POLL_OPTIONS_TABLE . ' SET poll_option_total = poll_option_total - 1 WHERE poll_option_id = ' . (int) $option . ' AND topic_id = ' . (int) $topic_id; $db->sql_query($sql); $vote_counts[$option]--; if ($user->data['is_registered']) < $sql = 'DELETE FROM ' . POLL_VOTES_TABLE . ' WHERE topic_id = ' . (int) $topic_id . ' AND poll_option_id = ' . (int) $option . ' AND vote_user_id = ' . (int) $user->data['user_id']; $db->sql_query($sql); > > > if ($user->data['user_id'] == ANONYMOUS && !$user->data['is_bot']) < $user->set_cookie('poll_' . $topic_id, implode(',', $voted_id), time() + 31536000); > $sql = 'UPDATE ' . TOPICS_TABLE . ' SET poll_last_vote = ' . time() . " WHERE topic_id = $topic_id"; //, topic_last_post_time = ' . time() . " -- for bumping topics with new votes, ignore for now $db->sql_query($sql); $redirect_url = append_sid("<$phpbb_root_path>viewtopic.$phpEx", "f=$forum_id&t=$topic_id" . (($start == 0) ? '' : "&start=$start")); $message = $user->lang['VOTE_SUBMITTED'] . '

Читайте также:

Пожалуйста, не занимайтесь самолечением!
При симпотмах заболевания - обратитесь к врачу.