Вход Регистрация
Файл: 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($iId, explode(',', rtrim($aVals['selected_categories'], ',')), ($aVals['post_status'] == 1 ? 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', $iId, Phpfox::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($iId, explode(',', rtrim($aVals['selected_categories'], ',')), ($aVals['post_status'] == 1 ? 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($sTitle, 255)) : null);

            
$this->database()->update(Phpfox::getT('blog'), array(
                
'title' => Phpfox::getLib('parse.input')->clean($sTitle, 255),
                
"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);
    }    
}

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