Вход Регистрация
Файл: library/XenForo/DataWriter/Feed.php
Строк: 69
<?php
/**
* Data writer for Feeds.
*
* @package XenForo_Feed
*/
class XenForo_DataWriter_Feed extends XenForo_DataWriter
{
    
/**
     * Returns all xf_feed fields
     *
     * @see XenForo_DataWriter::_getFields()
     */
    
protected function _getFields()
    {
        return array(
'xf_feed' => array(
            
'feed_id'
                
=> array('type' => self::TYPE_UINT,   'autoIncrement' => true),
            
'title'
                
=> array('type' => self::TYPE_STRING'default' => '''maxLength' => 250),
            
'url'
                
=> array('type' => self::TYPE_STRING'required' => true'maxLength' => 2083,
                    
'verification' => array('XenForo_DataWriter_Helper_Uri''verifyUri')),
            
'frequency'
                
=> array('type' => self::TYPE_UINT,   'required' => true'allowedValues' => $this->_getFeedModel()->getFrequencyValues()),
            
'node_id'
                
=> array('type' => self::TYPE_UINT,   'required' => true'verification' => array('$this''_verifyForum')),
            
'user_id'
                
=> array('type' => self::TYPE_UINT,   'default' => 0),
            
'prefix_id'
                
=> array('type' => self::TYPE_UINT,   'default' => 0),
            
'title_template'
                
=> array('type' => self::TYPE_STRING'default' => '''maxLength' => 250),
            
'message_template'
                
=> array('type' => self::TYPE_STRING'required' => true'requiredError' => 'please_enter_message_template'),
            
'discussion_visible'
                
=> array('type' => self::TYPE_BOOLEAN'default' => 1),
            
'discussion_open'
                
=> array('type' => self::TYPE_BOOLEAN'default' => 1),
            
'discussion_sticky'
                
=> array('type' => self::TYPE_BOOLEAN'default' => 0),
            
'last_fetch'
                
=> array('type' => self::TYPE_UINT,    'default' => 0),
            
'active'
                
=> array('type' => self::TYPE_BOOLEAN'default' => 1),
        ));
    }

    
/**
     * @see XenForo_DataWriter::_getExistingData()
     */
    
protected function _getExistingData($data)
    {
        if (!
$id $this->_getExistingPrimaryKey($data))
        {
            return 
false;
        }

        return array(
'xf_feed' => $this->_getFeedModel()->getFeedById($id));
    }

    
/**
     * @see XenForo_DataWriter::_getUpdateCondition()
     */
    
protected function _getUpdateCondition($tableName)
    {
        return 
'feed_id = ' $this->_db->quote($this->getExisting('feed_id'));
    }

    protected function 
_verifyForum(&$nodeId)
    {
        
$forum $this->getModelFromCache('XenForo_Model_Forum')->getForumById($nodeId);
        if (!
$forum)
        {
            
$this->error(new XenForo_Phrase('please_select_valid_forum'), 'node_id');
            return 
false;
        }

        return 
true;
    }

    
/**
     * Fill in the title field if it's not been set
     *
     * @see XenForo_DataWriter::_preSave()
     */
    
protected function _preSave()
    {
        if (
$this->get('url')
            && (!
$this->get('title')
                || (
$this->isChanged('url') && !$this->isChanged('title'))
            )
        )
        {
            
$feed $this->_getFeedModel()->getFeedData($this->get('url'));
            if (
$feed)
            {
                
$this->set('title'$feed['title']);
            }
            else
            {
                
$this->set('title'$this->get('url'));
            }
        }
    }

    protected function 
_postDelete()
    {
        
$this->_db->delete('xf_feed_log''feed_id = ' $this->_db->quote($this->get('feed_id')));
    }

    
/**
     * @return XenForo_Model_Feed
     */
    
protected function _getFeedModel()
    {
        return 
$this->getModelFromCache('XenForo_Model_Feed');
    }
}
Онлайн: 2
Реклама