1
0
Fork 0
mirror of https://github.com/Oreolek/ifhub.club.git synced 2024-07-04 23:44:25 +03:00
ifhub.club/classes/modules/topic/entity/Topic.entity.class.php

385 lines
12 KiB
PHP
Raw Normal View History

2008-09-21 09:36:57 +03:00
<?
/*-------------------------------------------------------
*
* LiveStreet Engine Social Networking
* Copyright © 2008 Mzhelskiy Maxim
*
*--------------------------------------------------------
*
* Official site: www.livestreet.ru
* Contact e-mail: rus.engine@gmail.com
*
* GNU General Public License, version 2:
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
*
---------------------------------------------------------
*/
class TopicEntity_Topic extends Entity
{
/**
* массив объектов(не всегда) для дополнительных типов топиков(линки, опросы, подкасты и т.п.)
*
* @var unknown_type
*/
protected $aExtra=null;
2008-09-21 09:36:57 +03:00
public function getId() {
return $this->_aData['topic_id'];
}
public function getBlogId() {
return $this->_aData['blog_id'];
}
public function getUserId() {
return $this->_aData['user_id'];
}
public function getType() {
return $this->_aData['topic_type'];
}
public function getTitle() {
return $this->_aData['topic_title'];
}
public function getText() {
return $this->_aData['topic_text'];
}
public function getTextShort() {
return $this->_aData['topic_text_short'];
}
public function getTextSource() {
return $this->_aData['topic_text_source'];
}
public function getExtra() {
if (isset($this->_aData['topic_extra'])) {
return $this->_aData['topic_extra'];
}
return serialize('');
}
2008-09-21 09:36:57 +03:00
public function getTags() {
return $this->_aData['topic_tags'];
}
public function getDateAdd() {
return $this->_aData['topic_date_add'];
}
public function getDateEdit() {
return $this->_aData['topic_date_edit'];
}
public function getUserIp() {
return $this->_aData['topic_user_ip'];
}
public function getPublish() {
return $this->_aData['topic_publish'];
}
public function getPublishDraft() {
return $this->_aData['topic_publish_draft'];
}
public function getPublishIndex() {
return $this->_aData['topic_publish_index'];
}
2008-09-21 09:36:57 +03:00
public function getRating() {
return number_format(round($this->_aData['topic_rating'],2), 0, '.', '');
}
public function getCountVote() {
return $this->_aData['topic_count_vote'];
}
public function getCountRead() {
return $this->_aData['topic_count_read'];
}
public function getCountComment() {
return $this->_aData['topic_count_comment'];
}
public function getCutText() {
return $this->_aData['topic_cut_text'];
}
public function getForbidComment() {
return $this->_aData['topic_forbid_comment'];
}
public function getTextHash() {
return $this->_aData['topic_text_hash'];
}
2008-09-21 09:36:57 +03:00
public function getCountCommentNew() {
return $this->_aData['count_comment_new'];
}
public function getTagsArray() {
return explode(',',$this->getTags());
}
2008-09-21 09:36:57 +03:00
public function getUserLogin() {
return $this->_aData['user_login'];
}
public function getBlogType() {
return $this->_aData['blog_type'];
}
public function getBlogUrl() {
return $this->_aData['blog_url'];
}
public function getBlogTitle() {
return $this->_aData['blog_title'];
}
public function getBlogUrlFull() {
if ($this->getBlogType()=='personal') {
2009-05-02 10:34:49 +03:00
return DIR_WEB_ROOT.'/'.ROUTE_PAGE_MY.'/'.$this->getUserLogin().'/';
2008-09-21 09:36:57 +03:00
} else {
2009-05-02 10:34:49 +03:00
return DIR_WEB_ROOT.'/'.ROUTE_PAGE_BLOG.'/'.$this->getBlogUrl().'/';
2008-09-21 09:36:57 +03:00
}
}
public function getUrl() {
if ($this->getBlogType()=='personal') {
2009-05-02 10:34:49 +03:00
return DIR_WEB_ROOT.'/'.ROUTE_PAGE_BLOG.'/'.$this->getId().'.html';
2008-09-21 09:36:57 +03:00
} else {
2009-05-02 10:34:49 +03:00
return DIR_WEB_ROOT.'/'.ROUTE_PAGE_BLOG.'/'.$this->getBlogUrl().'/'.$this->getId().'.html';
2008-09-21 09:36:57 +03:00
}
}
public function getUserIsVote() {
return $this->_aData['user_is_vote'];
}
public function getUserVoteDelta() {
return $this->_aData['user_vote_delta'];
}
public function getUserQuestionIsVote() {
return $this->_aData['user_question_is_vote'];
}
public function getUserIsBlogAdministrator() {
return $this->_aData['user_is_blog_administrator'];
}
public function getUserIsBlogModerator() {
return $this->_aData['user_is_blog_moderator'];
}
public function getBlogOwnerId() {
return $this->_aData['blog_owner_id'];
}
public function getIsFavourite() {
return $this->_aData['topic_is_favourite'];
}
/***************************************************************************************************************************************************
* методы расширения типов топика
***************************************************************************************************************************************************
*/
protected function extractExtra() {
if (is_null($this->aExtra)) {
$this->aExtra=unserialize($this->getExtra());
}
}
// методы для топика-ссылки
public function getLinkUrl($bShort=false) {
if ($this->getType()!='link') {
return null;
}
$this->extractExtra();
if (isset($this->aExtra['url'])) {
if ($bShort) {
$sUrl=$this->aExtra['url'];
if (preg_match("/^http:\/\/(.*)$/i",$sUrl,$aMatch)) {
$sUrl=$aMatch[1];
}
$sUrlShort=substr($sUrl,0,30);
if (strlen($sUrlShort)!=strlen($sUrl)) {
return $sUrlShort.'...';
}
return $sUrl;
}
$sUrl=$this->aExtra['url'];
if (preg_match("/^http:\/\/(.*)$/i",$sUrl,$aMatch)) {
$sUrl=$aMatch[1];
}
return 'http://'.$sUrl;
}
return null;
}
public function setLinkUrl($data) {
if ($this->getType()!='link') {
return;
}
$this->extractExtra();
$this->aExtra['url']=$data;
$this->setExtra($this->aExtra);
}
public function getLinkCountJump() {
if ($this->getType()!='link') {
return null;
}
$this->extractExtra();
if (isset($this->aExtra['count_jump'])) {
return (int)$this->aExtra['count_jump'];
}
return 0;
}
public function setLinkCountJump($data) {
if ($this->getType()!='link') {
return;
}
$this->extractExtra();
$this->aExtra['count_jump']=$data;
$this->setExtra($this->aExtra);
}
//методы для топика-вопроса
public function addQuestionAnswer($data) {
if ($this->getType()!='question') {
return;
}
$this->extractExtra();
$this->aExtra['answers'][]=array('text'=>$data,'count'=>0);
$this->setExtra($this->aExtra);
}
public function clearQuestionAnswer() {
if ($this->getType()!='question') {
return;
}
$this->extractExtra();
$this->aExtra['answers']=array();
$this->setExtra($this->aExtra);
}
public function getQuestionAnswers() {
if ($this->getType()!='question') {
return null;
}
$this->extractExtra();
if (isset($this->aExtra['answers'])) {
return $this->aExtra['answers'];
}
return array();
}
public function increaseQuestionAnswerVote($sIdAnswer) {
if ($aAnswers=$this->getQuestionAnswers()) {
if (isset($aAnswers[$sIdAnswer])) {
$aAnswers[$sIdAnswer]['count']++;
$this->aExtra['answers']=$aAnswers;
$this->setExtra($this->aExtra);
}
}
}
public function getQuestionAnswerMax() {
$aAnswers=$this->getQuestionAnswers();
$iMax=0;
foreach ($aAnswers as $aAns) {
if ($aAns['count']>$iMax) {
$iMax=$aAns['count'];
}
}
return $iMax;
}
public function getQuestionAnswerPercent($sIdAnswer) {
if ($aAnswers=$this->getQuestionAnswers()) {
if (isset($aAnswers[$sIdAnswer])) {
$iCountAll=$this->getQuestionCountVote()-$this->getQuestionCountVoteAbstain();
if ($iCountAll==0) {
return 0;
2009-03-12 10:11:46 +02:00
} else {
return number_format(round($aAnswers[$sIdAnswer]['count']*100/$iCountAll,1), 1, '.', '');
}
}
}
}
public function getQuestionCountVote() {
if ($this->getType()!='question') {
return null;
}
$this->extractExtra();
if (isset($this->aExtra['count_vote'])) {
return (int)$this->aExtra['count_vote'];
}
return 0;
}
public function setQuestionCountVote($data) {
if ($this->getType()!='question') {
return;
}
$this->extractExtra();
$this->aExtra['count_vote']=$data;
$this->setExtra($this->aExtra);
}
public function getQuestionCountVoteAbstain() {
if ($this->getType()!='question') {
return null;
}
$this->extractExtra();
if (isset($this->aExtra['count_vote_abstain'])) {
return (int)$this->aExtra['count_vote_abstain'];
}
return 0;
}
public function setQuestionCountVoteAbstain($data) {
if ($this->getType()!='question') {
return;
}
$this->extractExtra();
$this->aExtra['count_vote_abstain']=$data;
$this->setExtra($this->aExtra);
}
2008-09-21 09:36:57 +03:00
//*************************************************************************************************************************************************
2008-09-21 09:36:57 +03:00
public function setId($data) {
$this->_aData['topic_id']=$data;
}
public function setBlogId($data) {
$this->_aData['blog_id']=$data;
}
public function setUserId($data) {
$this->_aData['user_id']=$data;
}
public function setType($data) {
$this->_aData['topic_type']=$data;
}
public function setTitle($data) {
$this->_aData['topic_title']=$data;
}
public function setText($data) {
$this->_aData['topic_text']=$data;
}
public function setExtra($data) {
$this->_aData['topic_extra']=serialize($data);
}
2008-09-21 09:36:57 +03:00
public function setTextShort($data) {
$this->_aData['topic_text_short']=$data;
}
public function setTextSource($data) {
$this->_aData['topic_text_source']=$data;
}
public function setTags($data) {
$this->_aData['topic_tags']=$data;
}
public function setDateAdd($data) {
$this->_aData['topic_date_add']=$data;
}
public function setDateEdit($data) {
$this->_aData['topic_date_edit']=$data;
}
public function setUserIp($data) {
$this->_aData['topic_user_ip']=$data;
}
public function setPublish($data) {
$this->_aData['topic_publish']=$data;
}
public function setPublishDraft($data) {
$this->_aData['topic_publish_draft']=$data;
}
public function setPublishIndex($data) {
$this->_aData['topic_publish_index']=$data;
}
2008-09-21 09:36:57 +03:00
public function setRating($data) {
$this->_aData['topic_rating']=$data;
}
public function setCountVote($data) {
$this->_aData['topic_count_vote']=$data;
}
public function setCountRead($data) {
$this->_aData['topic_count_read']=$data;
}
public function setCountComment($data) {
$this->_aData['topic_count_comment']=$data;
}
public function setCutText($data) {
$this->_aData['topic_cut_text']=$data;
}
public function setForbidComment($data) {
$this->_aData['topic_forbid_comment']=$data;
}
public function setTextHash($data) {
$this->_aData['topic_text_hash']=$data;
}
2008-09-21 09:36:57 +03:00
}
?>