Beispiel #1
0
        public function add_comment()
        {

            if(!osc_comments_enabled()) {
                return 7;
            }

            $aItem  = $this->prepareDataForFunction('add_comment');


            $authorName     = trim(strip_tags($aItem['authorName']));
            $authorEmail    = trim(strip_tags($aItem['authorEmail']));
            $body           = trim(strip_tags($aItem['body']));
            $title          = trim(strip_tags($aItem['title']));
            $itemId         = $aItem['id'];
            $userId         = $aItem['userId'];
            $status_num     = -1;

            $banned = osc_is_banned(trim(strip_tags($aItem['authorEmail'])));
            if($banned==1 || $banned==2) {
                Session::newInstance()->_setForm('commentAuthorName', $authorName);
                Session::newInstance()->_setForm('commentTitle', $title);
                Session::newInstance()->_setForm('commentBody', $body);
                Session::newInstance()->_setForm('commentAuthorEmail', $authorEmail);
                return 5;
            }

            $item = $this->manager->findByPrimaryKey($itemId);
            View::newInstance()->_exportVariableToView('item', $item);
            $itemURL = osc_item_url();
            $itemURL = '<a href="'.$itemURL.'" >'.$itemURL.'</a>';

            Params::setParam('itemURL', $itemURL);

            if(osc_reg_user_post_comments() && !osc_is_web_user_logged_in()) {
                Session::newInstance()->_setForm('commentAuthorName', $authorName);
                Session::newInstance()->_setForm('commentTitle', $title);
                Session::newInstance()->_setForm('commentBody', $body);
                return 6;
            }

            if( !preg_match('|^.*?@.{2,}\..{2,3}$|', $authorEmail)) {
                Session::newInstance()->_setForm('commentAuthorName', $authorName);
                Session::newInstance()->_setForm('commentTitle', $title);
                Session::newInstance()->_setForm('commentBody', $body);
                return 3;
            }

            if( ($body == '') ) {
                Session::newInstance()->_setForm('commentAuthorName', $authorName);
                Session::newInstance()->_setForm('commentAuthorEmail', $authorEmail);
                Session::newInstance()->_setForm('commentTitle', $title);
                return 4;
            }

            $num_moderate_comments = osc_moderate_comments();
            if($userId==null) {
                $num_comments = 0;
            } else {
                $user         = User::newInstance()->findByPrimaryKey($userId);
                $num_comments = $user['i_comments'];
            }

            if ($num_moderate_comments == -1 || ($num_moderate_comments != 0 && $num_comments >= $num_moderate_comments)) {
                $status     = 'ACTIVE';
                $status_num = 2;
            } else {
                $status     = 'INACTIVE';
                $status_num = 1;
            }

            if (osc_akismet_key()) {
                require_once LIB_PATH . 'Akismet.class.php';
                $akismet = new Akismet(osc_base_url(), osc_akismet_key());
                $akismet->setCommentAuthor($authorName);
                $akismet->setCommentAuthorEmail($authorEmail);
                $akismet->setCommentContent($body);
                $akismet->setPermalink($itemURL);

                $status = $akismet->isCommentSpam() ? 'SPAM' : $status;
                if($status == 'SPAM') {
                    $status_num = 5;
                }
            }

            $mComments = ItemComment::newInstance();
            $aComment  = array('dt_pub_date'    => date('Y-m-d H:i:s')
                              ,'fk_i_item_id'   => $itemId
                              ,'s_author_name'  => $authorName
                              ,'s_author_email' => $authorEmail
                              ,'s_title'        => $title
                              ,'s_body'         => $body
                              ,'b_active'       => ($status=='ACTIVE' ? 1 : 0)
                              ,'b_enabled'      => 1
                              ,'fk_i_user_id'   => $userId);

            osc_run_hook('before_add_comment', $aComment);

            if( $mComments->insert($aComment) ) {
                $commentID = $mComments->dao->insertedId();
                if($status_num == 2 && $userId != null) { // COMMENT IS ACTIVE
                    $user = User::newInstance()->findByPrimaryKey($userId);
                    if( $user ) {
                        User::newInstance()->update( array( 'i_comments' => $user['i_comments'] + 1)
                                                    ,array( 'pk_i_id'    => $user['pk_i_id'] ) );
                    }
                }

                //Notify admin
                if ( osc_notify_new_comment() ) {
                    osc_run_hook('hook_email_new_comment_admin', $aItem);
                }

                //Notify user
                if ( osc_notify_new_comment_user() ) {
                    osc_run_hook('hook_email_new_comment_user', $aItem);
                }

                osc_run_hook( 'add_comment', $commentID );

                return $status_num;
            }

            return -1;
        }
Beispiel #2
0
                <h2 class="render-title"><?php 
_e('Notifications');
?>
</h2>

                <div class="form-row">
                    <div class="form-label"><?php 
_e('E-mail admin whenever');
?>
</div>
                    <div class="form-controls">
                        <div class="form-label-checkbox">
                            <label>
                                <input type="checkbox" <?php 
echo osc_notify_new_comment() ? 'checked="checked"' : '';
?>
 name="notify_new_comment" value="1" /> <?php 
_e("A new comment is posted");
?>
                            </label>
                        </div>
                    </div>
                </div>
                <div class="form-row">
                    <div class="form-label"><?php 
_e('E-mail user whenever');
?>
</div>
                    <div class="form-controls">
                        <div class="form-label-checkbox">
Beispiel #3
0
 public function add_comment()
 {
     $aItem = $this->prepareDataForFunction('add_comment');
     $authorName = trim($aItem['authorName']);
     $authorName = strip_tags($authorName);
     $authorEmail = trim($aItem['authorEmail']);
     $authorEmail = strip_tags($authorEmail);
     $body = trim($aItem['body']);
     $body = strip_tags($body);
     $title = $aItem['title'];
     $itemId = $aItem['id'];
     $userId = $aItem['userId'];
     $status_num = -1;
     $item = $this->manager->findByPrimaryKey($itemId);
     $itemURL = osc_item_url();
     Params::setParam('itemURL', $itemURL);
     if ($authorName == '' || !preg_match('|^.*?@.{2,}\\..{2,3}$|', $authorEmail)) {
         return 3;
     }
     if ($body == '') {
         return 4;
     }
     $num_moderate_comments = osc_moderate_comments();
     if ($userId == null) {
         $num_comments = 0;
     } else {
         $num_comments = count(ItemComment::newInstance()->findByAuthorID($userId));
     }
     if ($num_moderate_comments == -1 || $num_moderate_comments != 0 && $num_comments >= $num_moderate_comments) {
         $status = 'ACTIVE';
         $status_num = 2;
     } else {
         $status = 'INACTIVE';
         $status_num = 1;
     }
     if (osc_akismet_key()) {
         require_once LIB_PATH . 'Akismet.class.php';
         $akismet = new Akismet(osc_base_url(), osc_akismet_key());
         $akismet->setCommentAuthor($authorName);
         $akismet->setCommentAuthorEmail($authorEmail);
         $akismet->setCommentContent($body);
         $akismet->setPermalink($itemURL);
         $status = $akismet->isCommentSpam() ? 'SPAM' : $status;
         if ($status == 'SPAM') {
             $status_num = 5;
         }
     }
     $mComments = ItemComment::newInstance();
     $aComment = array('dt_pub_date' => DB_FUNC_NOW, 'fk_i_item_id' => $itemId, 's_author_name' => $authorName, 's_author_email' => $authorEmail, 's_title' => $title, 's_body' => $body, 'e_status' => $status, 'fk_i_user_id' => $userId);
     if ($mComments->insert($aComment)) {
         $notify = osc_notify_new_comment();
         $admin_email = osc_contact_email();
         $prefLocale = osc_language();
         //Notify admin
         if ($notify) {
             $mPages = new Page();
             $aPage = $mPages->findByInternalName('email_new_comment_admin');
             $locale = osc_current_user_locale();
             $content = array();
             if (isset($aPage['locale'][$locale]['s_title'])) {
                 $content = $aPage['locale'][$locale];
             } else {
                 $content = current($aPage['locale']);
             }
             $words = array();
             $words[] = array('{COMMENT_AUTHOR}', '{COMMENT_EMAIL}', '{COMMENT_TITLE}', '{COMMENT_TEXT}', '{ITEM_TITLE}', '{ITEM_ID}', '{ITEM_URL}');
             $words[] = array($authorName, $authorEmail, $title, $body, $item['s_title'], $itemId, $itemURL);
             $title_email = osc_mailBeauty($content['s_title'], $words);
             $body_email = osc_mailBeauty($content['s_text'], $words);
             $from = osc_contact_email();
             $from_name = osc_page_title();
             if (osc_notify_contact_item()) {
                 $add_bbc = osc_contact_email();
             }
             $emailParams = array('from' => $admin_email, 'from_name' => __('Admin mail system'), 'subject' => $title_email, 'to' => $admin_email, 'to_name' => __('Admin mail system'), 'body' => $body_email, 'alt_body' => $body_email);
             osc_sendMail($emailParams);
         }
         osc_run_hook('add_comment', $item);
         return $status_num;
     }
     return -1;
 }