Чиним Пост-Опрос, Пост-Фотосет и Пост-Ссылка
Как вы уже заметили на 1.0.3 не работают «Пост-Опрос, Пост-Фотосет и Пост-Ссылка»
Чиним так. В файле: /classes/modules/topic/entity/Topic.entity.class.php
Заменить функции на вот эти:(Извеняйте, что не описал что именно менять, тут лимит стоит 15000. Но там всё идёт по порядку. Найдите начало и конец, и замените на этот код)
Не дадим 1.0.3 умереть!
Чиним так. В файле: /classes/modules/topic/entity/Topic.entity.class.php
Заменить функции на вот эти:(Извеняйте, что не описал что именно менять, тут лимит стоит 15000. Но там всё идёт по порядку. Найдите начало и конец, и замените на этот код)
/** * Извлекает сериализованные данные топика */ protected function extractExtra() { if (null === $this->aExtra) { $aData = @unserialize($this->getExtra()); if (is_array($aData)) { $this->aExtra = $aData; } } } /** * Устанавливает значение нужного параметра * * @param string $sName Название параметра/данных * @param mixed $data Данные */ protected function setExtraValue($sName, $data) { $this->extractExtra(); $this->aExtra[$sName] = $data; $this->setExtra($this->aExtra); } /** * Извлекает значение параметра * * @param string $sName Название параметра * * @return null|mixed */ protected function getExtraValue($sName) { $this->extractExtra(); if (isset($this->aExtra[$sName])) { return $this->aExtra[$sName]; } return null; } /* *** ******************** *** */ /* *** SOURCE LINK OF TOPIC *** */ /** * Returns URL of topic's source link * * @param bool $bShort Shorten URL * * @return null|string */ public function getSourceLink($bShort = false) { if ($sUrl = $this->getExtraValue('url')) { if ($bShort) { $sUrl = htmlspecialchars($sUrl); if (preg_match('/^https?:\/\/(.*)$/i', $sUrl, $aMatch)) { $sUrl = $aMatch[1]; } $sUrlShort = substr($sUrl, 0, 30); if (strlen($sUrlShort) != strlen($sUrl)) { return $sUrlShort . '...'; } return $sUrl; } else { if (!preg_match('/^https?:\/\/(.*)$/i', $sUrl, $aMatch)) { $sUrl = 'http://' . $sUrl; } } return $sUrl; } return null; } /** * Set URL of topic's source link * * @param string $data */ public function setSourceLink($data) { $this->setExtraValue('url', strip_tags($data)); } /** * Возвращает количество переходов по ссылке в топике-ссылке * * @return int */ public function getSourceLinkCountJump() { return (int)$this->getExtraValue('count_jump'); } /** * Устанавливает количество переходов по ссылке в топике-ссылке * * @param string $data */ public function setSourceLinkCountJump($data) { $this->setExtraValue('count_jump', $data); } /* *** ********************** *** */ /* *** QUESTIONNAIRE OF TOPIC *** */ /** * Устанавливает вопрос * * @param string $data */ public function setQuestionTitle($data) { $this->setExtraValue('question_title', $data); } /** * Возвращает вопрос, если вопрос не указан - заголовок топика * * @return int|null */ public function getQuestionTitle() { if ($this->getExtraValue('question_title')) { return $this->getExtraValue('question_title'); } return $this->getTitle(); } /** * Добавляет вариант ответа в опросе топика * * @param string $data */ public function addQuestionAnswer($data) { $this->extractExtra(); $this->aExtra['answers'][] = array('text' => $data, 'count' => 0); $this->setExtra($this->aExtra); } /** * Очищает варианты ответа в опросе топика */ public function clearQuestionAnswer() { $this->setExtraValue('answers', array()); } /** * Возвращает варианты ответа в опросе топика * * @param bool $bSortVote * * @return array|null */ public function getQuestionAnswers($bSortVote = false) { $aAnswers = $this->getExtraValue('answers'); if ($aAnswers && $bSortVote) { uasort( $aAnswers, create_function( '$a,$b', "if (\$a['count'] == \$b['count']) { return 0; } return (\$a['count'] < \$b['count']) ? 1 : -1;" ) ); } return $aAnswers ? $aAnswers : array(); } /** * Увеличивает количество ответов на данный вариант в опросе топика * * @param int $sIdAnswer ID варианта ответа */ public function increaseQuestionAnswerVote($sIdAnswer) { if ($aAnswers = $this->getQuestionAnswers()) { if (isset($aAnswers[$sIdAnswer])) { $aAnswers[$sIdAnswer]['count']++; $this->aExtra['answers'] = $aAnswers; $this->setExtra($this->aExtra); } } } /** * Возвращает максимально количество ответов на вариант в опросе топика * * @return int */ public function getQuestionAnswerMax() { $aAnswers = $this->getQuestionAnswers(); $iMax = 0; foreach ($aAnswers as $aAns) { if ($aAns['count'] > $iMax) { $iMax = $aAns['count']; } } return $iMax; } /** * Возвращает в процентах количество проголосовавших за конкретный вариант * * @param int $sIdAnswer ID варианта * * @return int|string */ public function getQuestionAnswerPercent($sIdAnswer) { if ($aAnswers = $this->getQuestionAnswers()) { if (isset($aAnswers[$sIdAnswer])) { $iCountAll = $this->getQuestionCountVote() - $this->getQuestionCountVoteAbstain(); if (!$iCountAll == 0) { return number_format(round($aAnswers[$sIdAnswer]['count'] * 100 / $iCountAll, 1), 1, '.', ''); } } } return 0; } /** * Возвращает общее число принявших участие в опросе в опросе топика * * @return int */ public function getQuestionCountVote() { return (int)$this->getExtraValue('count_vote'); } /** * Устанавливает общее число принявших участие в опросе в опросе топика * * @param int $data */ public function setQuestionCountVote($data) { $this->setExtraValue('count_vote', $data); } /** * Возвращает число воздержавшихся от участия в опросе * * @return int */ public function getQuestionCountVoteAbstain() { return (int)$this->getExtraValue('count_vote_abstain'); } /** * Устанавливает число воздержавшихся от участия в опросе * * @param int $data * * @return mixed */ public function setQuestionCountVoteAbstain($data) { $this->setExtraValue('count_vote_abstain', $data); } /** * Возвращает фотографии из топика-фотосета * * @param int|null $iFromId ID с которого начинать выборку * @param int|null $iCount Количество * @return array */ public function getPhotosetPhotos($iFromId = null, $iCount = null) { return $this->Topic_getPhotosByTopicId($this->getId(), $iFromId, $iCount); } /** * Возвращает количество фотографий в топике-фотосете * * @return int|null */ public function getPhotosetCount() { return $this->getExtraValue('count_photo'); } /** * Возвращает ID главной фото в топике-фотосете * * @return int|null */ public function getPhotosetMainPhotoId() { $oImage = $this->getPhotosetMainPhoto(); if ($oImage) { return $oImage->getMresourceId(); } return $this->getExtraValue('main_photo_id'); } /** * Устанавливает ID главной фото в топике-фотосете * * @param int $data */ public function setPhotosetMainPhotoId($iPhotoId) { $this->setExtraValue('main_photo_id', $iPhotoId); $this->setProp('_photoset_photos', null); } /** * Устанавливает количество фотографий в топике-фотосете * * @param int $data */ public function setPhotosetCount($iCount) { $this->setExtraValue('count_photo', $iCount); $this->setProp('_photoset_photos', null); }
Не дадим 1.0.3 умереть!
2 комментария