Вход Регистрация
Файл: upload/module/blog/include/service/process.class.php
Строк: 287
<?php
/**
 * [PHPFOX_HEADER]
 */

defined('PHPFOX') or exit('NO DICE!');

/**
 * 
 * 
 * @copyright        [PHPFOX_COPYRIGHT]
 * @author          Raymond Benc
 * @package          Module_Blog
 * @version         $Id: process.class.php 4142 2012-05-02 09:55:48Z Miguel_Espinoza $
 */
class Blog_Service_Process extends Phpfox_Service 
{
    
/**
     * Class constructor
     */    
    
public function __construct()
    {
        
$this->_sTable Phpfox::getT('blog');
    }    
    
    public function 
add($aVals)
    {
        ((
$sPlugin Phpfox_Plugin::get('blog.service_process__start')) ? eval($sPlugin) : false);
        
$oFilter Phpfox::getLib('parse.input');        
        
        
// check if the user entered a forbidden word
        
Phpfox::getService('ban')->checkAutomaticBan($aVals['text'] . ' ' $aVals['title']);

        if (!
Phpfox::getParam('blog.allow_links_in_blog_title'))
        {
            if (!
Phpfox::getLib('validator')->check($aVals['title'], array('url')))
            {
                return 
Phpfox_Error::set(Phpfox::getPhrase('blog.we_do_not_allow_links_in_titles'));
            }
        }        
        if (!isset(
$aVals['privacy']))
        {
            
$aVals['privacy'] = 0;
        }
        if (!isset(
$aVals['privacy_comment']))
        {
            
$aVals['privacy_comment'] = 0;
        }
        
$sTitle $oFilter->clean($aVals['title'], 255);
        
$bHasAttachments = (!empty($aVals['attachment']) && Phpfox::getUserParam('attachment.can_attach_on_blog'));        
        if (!isset(
$aVals['post_status']))
        {
            
$aVals['post_status'] = 1;
        }

        
$aInsert = array(
            
'user_id' => Phpfox::getUserId(),
            
'title' => $sTitle,
            
'time_stamp' => PHPFOX_TIME,
            
'is_approved' => 1,
            
'privacy' => (isset($aVals['privacy']) ? $aVals['privacy'] : '0'),
            
'privacy_comment' => (isset($aVals['privacy_comment']) ? $aVals['privacy_comment'] : '0'),
            
'post_status' => (isset($aVals['post_status']) ? $aVals['post_status'] : '1'),
            
'total_attachment' => ($bHasAttachments Phpfox::getService('attachment')->getCount($aVals['attachment']) : 0)
        );        
        
        
$bIsSpam false;
        if (
Phpfox::getParam('blog.spam_check_blogs'))
        {
            if (
Phpfox::getLib('spam')->check(array(
                        
'action' => 'isSpam',                                        
                        
'params' => array(
                            
'module' => 'blog',
                            
'content' => $oFilter->prepare($aVals['text'])
                        )
                    )
                )
            )
            {
                
$aInsert['is_approved'] = '9';
                
$bIsSpam true;                
            }
        }
        
        if (
Phpfox::getUserParam('blog.approve_blogs'))
        {
            
$aInsert['is_approved'] = '0';
            
$bIsSpam true;
        }
        
        ((
$sPlugin Phpfox_Plugin::get('blog.service_process_add_start')) ? eval($sPlugin) : false);

        
$iId $this->database()->insert(Phpfox::getT('blog'), $aInsert);        
        
        ((
$sPlugin Phpfox_Plugin::get('blog.service_process_add_end')) ? eval($sPlugin) : false);
        
        
$this->database()->insert(Phpfox::getT('blog_text'), array(
                
'blog_id' => $iId,
                
'text' => $oFilter->clean($aVals['text']),
                
'text_parsed' => $oFilter->prepare($aVals['text'])
            )
        );
        
        if (!empty(
$aVals['selected_categories']))
        {
            
Phpfox::getService('blog.category')->addCategoryForBlog($iIdexplode(','rtrim($aVals['selected_categories'], ',')), ($aVals['post_status'] == true false));
        }

        if (
Phpfox::getUserParam('tag.can_add_tags_on_blogs') && Phpfox::isModule('tag') && isset($aVals['tag_list']) && ((is_array($aVals['tag_list']) && count($aVals['tag_list'])) || (!empty($aVals['tag_list']))))
        {
            
Phpfox::getService('tag.process')->add('blog'$iIdPhpfox::getUserId(), $aVals['tag_list']);
        }
        
        
// If we uploaded any attachments make sure we update the 'item_id'
        
if ($bHasAttachments)
        {
            
Phpfox::getService('attachment.process')->updateItemId($aVals['attachment'], Phpfox::getUserId(), $iId);
        }        
    
        if (
$bIsSpam === true)
        {            
            return 
$iId;
        }        
        
        if (
$aVals['post_status'] == 1)
        {
            (
Phpfox::isModule('feed') ? Phpfox::getService('feed.process')->add('blog'$iId$aVals['privacy'], (isset($aVals['privacy_comment']) ? (int) $aVals['privacy_comment'] : 0)) : null);
            
            
// Update user activity
            
Phpfox::getService('user.activity')->update(Phpfox::getUserId(), 'blog');
        }        
        
        if (
$aVals['privacy'] == '4')
        {
            
Phpfox::getService('privacy.process')->add('blog'$iId, (isset($aVals['privacy_list']) ? $aVals['privacy_list'] : array()));            
        }        
        
        
// $this->cache()->remove(array('user/' . Phpfox::getUserId(), 'blog_browse'), 'substr');
        
        
(($sPlugin Phpfox_Plugin::get('blog.service_process__end')) ? eval($sPlugin) : false);    
        
        return 
$iId;
    }
    
    public function 
update($iId$iUserId$aVals, &$aRow null)
    {
        ((
$sPlugin Phpfox_Plugin::get('blog.service_process_update__start')) ? eval($sPlugin) : false);
        
        if (!isset(
$aVals['post_status']))
        {
            
// $aVals['post_status'] = 1;
        
}
        
        if (!isset(
$aVals['privacy']))
        {
            
$aVals['privacy'] = 0;
        }
        
        if (!isset(
$aVals['privacy_comment']))
        {
            
$aVals['privacy_comment'] = 0;
        }        

        
$oFilter Phpfox::getLib('parse.input');
        
        
$bHasAttachments = (!empty($aVals['attachment']) && Phpfox::getUserParam('attachment.can_attach_on_blog') && $iUserId == Phpfox::getUserId());        
        
Phpfox::getService('ban')->checkAutomaticBan($aVals['title'] . ' ' $aVals['text']);
        if (
$bHasAttachments)
        {
            
Phpfox::getService('attachment.process')->updateItemId($aVals['attachment'], $iUserId$iId);
        }

        
$aUpdate = array(
            
'title' => $oFilter->clean($aVals['title'], 255),
            
'time_update' => PHPFOX_TIME,
            
'is_approved' => 1,
            
'privacy' => (isset($aVals['privacy']) ? $aVals['privacy'] : '0'),
            
'privacy_comment' => (isset($aVals['privacy_comment']) ? $aVals['privacy_comment'] : '0'),
            
'post_status' => (isset($aVals['post_status']) ? $aVals['post_status'] : '1'),
            
'total_attachment' => (Phpfox::isModule('attachment') ? Phpfox::getService('attachment')->getCountForItem($iId'blog') : '0')
        );        

        if (
$aRow !== null && isset($aVals['post_status']) && $aRow['post_status'] == '2' && $aVals['post_status'] == '1')
        {
            
$aUpdate['time_stamp'] = PHPFOX_TIME;    
        }
        
        
$bIsSpam false;
        if (
Phpfox::getParam('blog.spam_check_blogs'))
        {
            if (
Phpfox::getLib('spam')->check(array(
                        
'action' => 'isSpam',                                        
                        
'params' => array(
                            
'module' => 'blog',
                            
'content' => $oFilter->prepare($aVals['text'])
                        )
                    )
                )
            )
            {
                
$aInsert['is_approved'] = '9';
                
$bIsSpam true;                
            }
        }
    
        ((
$sPlugin Phpfox_Plugin::get('blog.service_process_update')) ? eval($sPlugin) : false);
        
        
$this->database()->update(Phpfox::getT('blog'), $aUpdate'blog_id = ' . (int) $iId);    
        
$this->database()->update(Phpfox::getT('blog_text'), array(
            
'text' => $oFilter->clean($aVals['text']), 
            
'text_parsed' => $oFilter->prepare($aVals["text"])
        ), 
'blog_id = ' . (int) $iId);
        
        
Phpfox::getService('blog.category')->updateCategoryForBlog($iIdexplode(','rtrim($aVals['selected_categories'], ',')), ($aVals['post_status'] == true false));
        
        if (
Phpfox::getUserParam('tag.can_add_tags_on_blogs') && Phpfox::isModule('tag'))
        {
            
Phpfox::getService('tag.process')->update('blog'$iId$iUserId, (!Phpfox::getLib('parse.format')->isEmpty($aVals['tag_list']) ? $aVals['tag_list'] : null));
        }
                
        if (
$aRow !== null && $aRow['post_status'] == '2' && $aVals['post_status'] == '1')
        {    
            (
Phpfox::isModule('feed') ? Phpfox::getService('feed.process')->add('blog'$iId$aVals['privacy'], $aVals['privacy_comment'], 0$iUserId) : null);
            
            
// Update user activity
            
Phpfox::getService('user.activity')->update($iUserId'blog');            
        }
        else 
        {
            (
Phpfox::isModule('feed') ? Phpfox::getService('feed.process')->update('blog'$iId$aVals['privacy'], $aVals['privacy_comment'], 0$iUserId) : null);
        }        
        
        if (
Phpfox::isModule('privacy'))
        {
            if (
$aVals['privacy'] == '4')
            {
                
Phpfox::getService('privacy.process')->update('blog'$iId, (isset($aVals['privacy_list']) ? $aVals['privacy_list'] : array()));
            }
            else 
            {
                
Phpfox::getService('privacy.process')->delete('blog'$iId);
            }            
        }
        
        
// $this->cache()->remove(array('user/' . $iUserId, 'blog_browse'), 'substr');
        
        
(($sPlugin Phpfox_Plugin::get('blog.service_process_update__end')) ? eval($sPlugin) : false);
        
        return 
$iId;
    }    
    
    public function 
updateBlogTitle($iId$sTitle)
    {
        ((
$sPlugin Phpfox_Plugin::get('blog.service_process_updateblogtitle__start')) ? eval($sPlugin) : false);
        if (
Phpfox::getService('blog')->hasAccess($iId'edit_own_blog''edit_user_blog'))
        {
            
Phpfox::getService('ban')->checkAutomaticBan($sTitle);
            if (!
Phpfox::getParam('blog.allow_links_in_blog_title'))
            {
                if (!
Phpfox::getLib('validator')->check($sTitle, array('url')))
                {
                    return 
Phpfox_Error::set(Phpfox::getPhrase('blog.we_do_not_allow_links_in_titles'));
                }
            }            
            
            
$oFilter Phpfox::getLib('parse.input');
            (
Phpfox::isModule('feed') ? Phpfox::getService('feed.process')->update('blog'$iId$oFilter->clean($sTitle255)) : null);

            
$this->database()->update(Phpfox::getT('blog'), array(
                
'title' => Phpfox::getLib('parse.input')->clean($sTitle255),
                
"time_update" => PHPFOX_TIME
            
), "blog_id = " . (int) $iId);
            
            return 
true;
        }
        ((
$sPlugin Phpfox_Plugin::get('blog.service_process_updateblogtitle__end')) ? eval($sPlugin) : false);
        return 
false;
    }
    
    public function 
updatePermaLink($iId$sTitle)
    {
        if (
Phpfox::getService('blog')->hasAccess($iId'edit_own_blog''edit_user_blog'))
        {        
            
$this->database()->update(Phpfox::getT('blog'), array(
                
"title_url" => Phpfox::getService('blog')->prepareTitle($sTitle),
            ), 
"blog_id = " . (int)$iId);
            
            return 
true;
        }
        
        return 
false;
    }    
    
    public function 
updateBlogText($iId$sText)
    {
        
Phpfox::getService('ban')->checkAutomaticBan($sText);
        ((
$sPlugin Phpfox_Plugin::get('blog.service_process_updateblogtext__start')) ? eval($sPlugin) : false);
        if (
Phpfox::getService('blog')->hasAccess($iId'edit_own_blog''edit_user_blog'))
        {
            
$oFilter Phpfox::getLib('parse.input');
            
            if (
Phpfox::getParam('blog.spam_check_blogs'))
            {
                if (
Phpfox::getLib('spam')->check(array(
                            
'action' => 'isSpam',                                        
                            
'params' => array(
                                
'module' => 'blog',
                                
'content' => Phpfox::getLib('parse.input')->prepare($sText)
                            )
                        )
                    )
                )
                {
                    
$this->database()->update(Phpfox::getT('blog'), array('is_approved' => '9'), "blog_id = " . (int) $iId);                    
                    
                    
Phpfox_Error::set(Phpfox::getPhrase('blog.your_blog_has_been_marked_as_spam'));
                }
            }            
            
            
$this->database()->update(Phpfox::getT('blog'), array(
                
'time_update' => PHPFOX_TIME
            
), "blog_id = " . (int) $iId);

            
$this->database()->update(Phpfox::getT('blog_text'), array(
                
'text' => $oFilter->clean($sText), "text_parsed" => $oFilter->prepare($sText)
            ), 
"blog_id = " . (int) $iId);
            
            return 
true;
        }
        ((
$sPlugin Phpfox_Plugin::get('blog.service_process_updateblogtext__end')) ? eval($sPlugin) : false);
        return 
false;
    }
    
    public function 
deleteInline($iId)
    {
        ((
$sPlugin Phpfox_Plugin::get('blog.service_process_deleteinline__start')) ? eval($sPlugin) : false);
        if ((
$iUserId Phpfox::getService('blog')->hasAccess($iId'delete_own_blog''delete_user_blog')))
        {
            
$this->delete($iId);
            
            (
Phpfox::isModule('attachment') ? Phpfox::getService('attachment.process')->deleteForItem($iUserId$iId'blog') : null);
            (
Phpfox::isModule('comment') ? Phpfox::getService('comment.process')->deleteForItem($iUserId$iId'blog') : null);
            (
Phpfox::isModule('tag') ? Phpfox::getService('tag.process')->deleteForItem($iUserId$iId'blog') : null);
            
            
// Update user activity
            
Phpfox::getService('user.activity')->update($iUserId'blog''-');                
            
            return 
true;
        }
        ((
$sPlugin Phpfox_Plugin::get('blog.service_process_deleteinline__end')) ? eval($sPlugin) : false);
        return 
false;
    }
    
    public function 
delete($iId)
    {
        ((
$sPlugin Phpfox_Plugin::get('blog.service_process_delete__start')) ? eval($sPlugin) : false);
        
$aBlog Phpfox::getService('blog')->getBlogForEdit($iId);
        
        
$this->database()->delete(Phpfox::getT('blog'), "blog_id = " . (int) $iId);        
        
$this->database()->delete(Phpfox::getT('blog_text'), "blog_id = " . (int) $iId);        
        
$this->database()->delete(Phpfox::getT('blog_track'), 'item_id = ' . (int)$iId);
        
        (
Phpfox::isModule('feed') ? Phpfox::getService('feed.process')->delete('blog',(int) $iId) : null);
        (
Phpfox::isModule('feed') ? Phpfox::getService('feed.process')->delete('comment_blog'$iId) : null);        
        
        
// Update user activity
        
Phpfox::getService('user.activity')->update($aBlog['user_id'], 'blog''-');
        
        
$aRows $this->database()->select('blog_id, category_id')
            ->
from(Phpfox::getT('blog_category_data'))
            ->
where('blog_id = ' . (int) $iId)
            ->
execute('getRows');
        
        if (
count($aRows))
        {
            foreach (
$aRows as $aRow)
            {
                
$this->database()->delete(Phpfox::getT('blog_category_data'), "blog_id = " . (int) $aRow['blog_id'] . " AND category_id = " . (int) $aRow['category_id']);                
                
$this->database()->updateCount('blog_category_data''category_id = ' . (int) $aRow['category_id'], 'used''blog_category''category_id = ' . (int) $aRow['category_id']);            
            }
        }    
        
        ((
$sPlugin Phpfox_Plugin::get('blog.service_process_delete')) ? eval($sPlugin) : false);
    }
    
    public function 
updateView($iId)
    {
        
$this->database()->query("
            UPDATE " 
$this->_sTable "
            SET total_view = total_view + 1
            WHERE blog_id = " 
. (int) $iId "
        "
);            
        
        return 
true;
    }
    
    public function 
updateCounter($iId$bMinus false)
    {
        
$this->database()->query("
            UPDATE " 
$this->_sTable "
            SET total_comment = total_comment " 
. ($bMinus "-" "+") . " 1
            WHERE blog_id = " 
. (int) $iId "
        "
);    
    }
    
    public function 
approve($iId)
    {
        
Phpfox::getUserParam('blog.can_approve_blogs'true);
        
        
$aBlog $this->database()->select('b.*, ' Phpfox::getUserField())
            ->
from(Phpfox::getT('blog'), 'b')
            ->
join(Phpfox::getT('user'), 'u''u.user_id = b.user_id')
            ->
where('b.blog_id = ' . (int) $iId)
            ->
execute('getRow');
            
        if (!isset(
$aBlog['blog_id']))
        {
            return 
Phpfox_Error::set(Phpfox::getPhrase('blog.the_blog_you_are_trying_to_approve_is_not_valid'));
        }
        
        if (
$aBlog['is_approved'] == '1')
        {
            return 
false;
        }
        
        
$this->database()->update(Phpfox::getT('blog'), array('is_approved' => '1''time_stamp' => PHPFOX_TIME), 'blog_id = ' $aBlog['blog_id']);

        if (
Phpfox::isModule('feed') && $aBlog['post_status'] == 1)
        {
            (
Phpfox::isModule('feed') ? Phpfox::getService('feed.process')->add('blog'$iId$aBlog['privacy'], $aBlog['privacy_comment'], 0$aBlog['user_id']) : null);
        }        
        
        if (
Phpfox::isModule('notification'))
        {
            
Phpfox::getService('notification.process')->add('blog_approved'$aBlog['blog_id'], $aBlog['user_id']);
        }
        
        if (
$aBlog['is_approved'] == '9')
        {
            
$this->database()->updateCounter('user''total_spam''user_id'$aBlog['user_id'], true);
        }
        
        
Phpfox::getService('user.activity')->update($aBlog['user_id'], 'blog');
        
        ((
$sPlugin Phpfox_Plugin::get('blog.service_process_approve__1')) ? eval($sPlugin) : false);
        
        
// Send the user an email
        
$sLink Phpfox::getLib('url')->permalink('blog'$aBlog['blog_id'], $aBlog['title']);
        
Phpfox::getLib('mail')->to($aBlog['user_id'])
            ->
subject(array('blog.your_blog_has_been_approved_on_site_title', array('site_title' => Phpfox::getParam('core.site_title'))))
            ->
message(array('blog.your_blog_has_been_approved_on_site_title_message', array('site_title' => Phpfox::getParam('core.site_title'), 'link' => $sLink)))
            ->
notification('blog.blog_is_approved')
            ->
send();            
        
        return 
true;
    }
    
    public function 
__call($sMethod$aArguments)
    {
        if (
$sPlugin Phpfox_Plugin::get('blog.service_process__call'))
        {
            return eval(
$sPlugin);
        }
        
        
Phpfox_Error::trigger('Call to undefined method ' __CLASS__ '::' $sMethod '()'E_USER_ERROR);
    }    
}

?>
Онлайн: 1
Реклама