Scroll.php
00001 <?php
00009 class Dsao_Model_Scroll_Scroll extends Dsao_Model_Scroll_Abstract
00010 {
00017 protected function _checkScrollData(Dsao_Scroll $scroll)
00018 {
00019 $filter = $this->_getObject('Dsao_Filter_Texts');
00020
00021
00022 $flagError = false;
00023
00024
00025 $scroll->subject = $filter->filterInput($scroll->subject, 50);
00026
00027
00028 if (!$scroll->subject)
00029 {
00030 $scroll->subject = false;
00031
00032 $flagError = true;
00033 }
00034
00035
00036 $scroll->content = $filter->filterInput
00037 ($scroll->content,
00038 Dsao_Registry::get('config')->modules->scroll->contentLength, false);
00039
00040
00041 if (!$scroll->content)
00042 {
00043 $scroll->content = false;
00044
00045 $flagError = true;
00046 }
00047
00048
00049
00050 $idUser = Dsao_Registry::get('user')->getId();
00051 $username = Dsao_Registry::get('user')->username;
00052
00053
00054 if ($scroll->idThread)
00055 {
00056
00057
00058 if ( !( $scrollThread = $this->isParticipated($idUser, $scroll->idThread)) )
00059 {
00060 $scroll->idThread = false;
00061
00062 return $scroll;
00063 }
00064
00065
00066 $scroll->idAuthor = $idUser;
00067 $scroll->nameAuthor = $username;
00068
00069
00070 $scroll->idRecipient = $scrollThread->getOtherUser($idUser)->getId();
00071 $scroll->nameRecipient = $scrollThread->getOtherUser($idUser)->username;
00072
00073 $scroll->idThread = $scrollThread->id;
00074
00075
00076 if (!$scroll->subject)
00077 {
00078 $scroll->subject = $scrollThread->subject;
00079 }
00080
00081
00082 $scroll->setValid();
00083
00084
00085
00086 if ($scrollThread->deleted != 0)
00087 {
00088 $scrollThread->delete(0, false);
00089 }
00090
00091 return $scroll;
00092 }
00093
00094
00095
00096
00097 if (strlen($scroll->nameRecipient) > 20)
00098 {
00099 $scroll->idRecipient = false;
00100
00101 $flagError = true;
00102 }
00103
00104
00105 $rowRecipient = $this->_getTable('user_data')->select()
00106 ->where('username = ?', $scroll->nameRecipient)->fetchRow();
00107
00108
00109
00110 if ( !$rowRecipient || $rowRecipient->id == $idUser)
00111 {
00112 $scroll->idRecipient = false;
00113
00114 $flagError = true;
00115 }
00116 else
00117 {
00118
00119 $scroll->idRecipient = $rowRecipient->id;
00120 $scroll->nameRecipient = $rowRecipient->username;
00121
00122
00123 $scroll->idAuthor = $idUser;
00124 $scroll->nameAuthor = $username;
00125 }
00126
00127
00128 if (!$flagError)
00129 {
00130 $scroll->setValid();
00131 }
00132
00133 return $scroll;
00134 }
00135
00144 protected function _sendScrollNotificationMail(Dsao_User $user, Dsao_Scroll $scroll)
00145 {
00146
00147 $idThread = ($scroll->idThread == 0 ? $scroll->id : $scroll->idThread);
00148
00149
00150 $content = Dsao_View_Smarty::sprintf('scroll_scroll_send_mail_content',
00151 array
00152 (
00153 'nameAuthor'=> $scroll->nameAuthor,
00154 'subject' => $scroll->subject
00155 ));
00156
00157
00158 $subject = Dsao_View_Smarty::sprintf('scroll_scroll_send_mail_subject',
00159 array('nameAuthor' => $scroll->nameAuthor));
00160
00161
00162 $mail = new Dsao_Mail($user, $subject, $content);
00163 $mail->send();
00164 }
00165
00175 public function insertScroll(Dsao_Scroll $scroll)
00176 {
00177 $this->_checkScrollData($scroll);
00178
00179
00180 if ($scroll->isValid())
00181 {
00182 $scroll->insert()->setReadOnly();
00183
00184
00185 $recipient = new Dsao_User(array('id' => $scroll->idRecipient));
00186 $recipient->refresh();
00187
00188 if ($recipient->scrollMailNotification)
00189 {
00190 $this->_sendScrollNotificationMail($recipient, $scroll);
00191 }
00192 }
00193
00194 return $scroll;
00195 }
00196 }