Exemplo n.º 1
0
/**
* Save feed.
*
* @param    array    $A
* @return   string   HTML redirect on success or feed editor + error message
*
*/
function savefeed($A)
{
    global $_CONF, $_TABLES, $LANG33;
    foreach ($A as $name => $value) {
        $A[$name] = COM_stripslashes($value);
    }
    if (isset($A['is_enabled']) && $A['is_enabled'] == 'on') {
        $A['is_enabled'] = 1;
    } else {
        $A['is_enabled'] = 0;
    }
    if (empty($A['title']) || empty($A['description']) || empty($A['filename'])) {
        $retval = COM_siteHeader('menu', $LANG33[38]) . COM_showMessageText($LANG33[39], $LANG33[38]) . editfeed($A['fid'], $A['type']) . COM_siteFooter();
        return $retval;
    }
    $result = DB_query("SELECT COUNT(*) AS count FROM {$_TABLES['syndication']} WHERE filename = '{$A['filename']}' AND (fid <> '{$A['fid']}')");
    $C = DB_fetchArray($result);
    if ($C['count'] > 0) {
        $retval = COM_siteHeader('menu', $LANG33[52]) . COM_showMessageText($LANG33[51], $LANG33[52]) . editfeed($A['fid'], $A['type']) . COM_siteFooter();
        return $retval;
    }
    if ($A['limits'] <= 0) {
        $retval = COM_siteHeader('menu', $LANG33[38]) . COM_showMessageText($LANG33[40], $LANG33[38]) . editfeed($A['fid'], $A['type']) . COM_siteFooter();
        return $retval;
    }
    if ($A['limits_in'] == 1) {
        $A['limits'] .= 'h';
    }
    // we can compensate if these are missing ...
    if (empty($A['charset'])) {
        $A['charset'] = $_CONF['default_charset'];
        if (empty($A['charset'])) {
            $A['charset'] = 'UTF-8';
        }
    }
    if (empty($A['language'])) {
        $A['language'] = $_CONF['rdf_language'];
        if (empty($A['language'])) {
            $A['language'] = $_CONF['locale'];
        }
    }
    if (empty($A['content_length']) || $A['content_length'] < 0) {
        $A['content_length'] = 0;
    }
    foreach ($A as $name => $value) {
        $A[$name] = addslashes($value);
    }
    DB_save($_TABLES['syndication'], 'fid,type,topic,header_tid,format,limits,content_length,title,description,feedlogo,filename,charset,language,is_enabled,updated,update_info', "{$A['fid']},'{$A['type']}','{$A['topic']}','{$A['header_tid']}','{$A['format']}','{$A['limits']}',{$A['content_length']},'{$A['title']}','{$A['description']}','{$A['feedlogo']}','{$A['filename']}','{$A['charset']}','{$A['language']}',{$A['is_enabled']},'0000-00-00 00:00:00',NULL");
    if ($A['fid'] == 0) {
        $A['fid'] = DB_insertId();
    }
    if ($A['is_enabled'] == 1) {
        SYND_updateFeed($A['fid']);
    } else {
        deleteFeedFile($A['filename']);
    }
    return COM_refresh($_CONF['site_admin_url'] . '/syndication.php?msg=58');
}
Exemplo n.º 2
0
/**
* Save feed.
*
* @param    array    $A
* @return   string   HTML redirect on success or feed editor + error message
*
*/
function savefeed($A)
{
    global $_CONF, $_TABLES, $LANG33;
    foreach ($A as $name => $value) {
        $A[$name] = COM_stripslashes($value);
    }
    if (isset($A['is_enabled']) && $A['is_enabled'] == 'on') {
        $A['is_enabled'] = 1;
    } else {
        $A['is_enabled'] = 0;
    }
    // Make sure correct format returned and correct file extenstion
    $A['filename'] = COM_sanitizeFilename($A['filename'], true);
    $file_parts = pathinfo($A['filename']);
    $A['filename'] = '';
    // Clear out filename. If it doesn't get recreated then we know there is an error
    if (!empty($file_parts['filename'])) {
        $formats = find_feedFormats();
        foreach ($formats as $f) {
            if ($A['format'] == $f['name'] . '-' . $f['version']) {
                switch ($f['name']) {
                    case 'Atom':
                        if (!in_array(@$file_parts['extension'], array('atm', 'xml'))) {
                            $file_parts['extension'] = 'xml';
                        }
                        $A['filename'] = $file_parts['filename'] . '.' . $file_parts['extension'];
                        break;
                    case 'RSS':
                        if (!in_array(@$file_parts['extension'], array('rss', 'xml'))) {
                            $file_parts['extension'] = 'rss';
                        }
                        $A['filename'] = $file_parts['filename'] . '.' . $file_parts['extension'];
                        break;
                    case 'RDF':
                        $A['filename'] = $file_parts['filename'] . '.rdf';
                        break;
                }
            }
        }
    }
    if (empty($A['title']) || empty($A['description']) || empty($A['filename'])) {
        $retval = COM_showMessageText($LANG33[39], $LANG33[38]) . editfeed($A['fid'], $A['type']);
        $retval = COM_createHTMLDocument($retval, array('pagetitle' => $LANG33[38]));
        return $retval;
    }
    $result = DB_query("SELECT COUNT(*) AS count FROM {$_TABLES['syndication']} WHERE filename = '{$A['filename']}' AND (fid <> '{$A['fid']}')");
    $C = DB_fetchArray($result);
    if ($C['count'] > 0) {
        $retval = COM_showMessageText($LANG33[51], $LANG33[52]) . editfeed($A['fid'], $A['type']);
        $retval = COM_createHTMLDocument($retval, array('pagetitle' => $LANG33[52]));
        return $retval;
    }
    if ($A['limits'] <= 0) {
        $retval = COM_showMessageText($LANG33[40], $LANG33[38]) . editfeed($A['fid'], $A['type']);
        $retval = COM_createHTMLDocument($retval, array('pagetitle' => $LANG33[38]));
        return $retval;
    }
    if ($A['limits_in'] == 1) {
        $A['limits'] .= 'h';
    }
    // we can compensate if these are missing ...
    if (!empty($A['charset'])) {
        $A['charset'] = preg_replace('/[^0-9a-zA-Z_\\-]/', '', $A['charset']);
    }
    if (empty($A['charset'])) {
        $A['charset'] = $_CONF['default_charset'];
        if (empty($A['charset'])) {
            $A['charset'] = 'UTF-8';
        }
    }
    if (!empty($A['language'])) {
        $A['language'] = preg_replace('/[^0-9a-zA-Z_\\.\\-]/', '', $A['language']);
    }
    if (empty($A['language'])) {
        $A['language'] = $_CONF['rdf_language'];
        if (empty($A['language'])) {
            $A['language'] = $_CONF['locale'];
        }
    }
    if (!empty($A['content_length'])) {
        $A['content_length'] = intval($A['content_length'], 10);
    }
    if (empty($A['content_length']) || $A['content_length'] < 0) {
        $A['content_length'] = 0;
    }
    foreach ($A as $name => $value) {
        $A[$name] = DB_escapeString($value);
    }
    DB_save($_TABLES['syndication'], 'fid,type,topic,header_tid,format,limits,content_length,title,description,feedlogo,filename,charset,language,is_enabled,updated,update_info', "{$A['fid']},'{$A['type']}','{$A['topic']}','{$A['header_tid']}','{$A['format']}','{$A['limits']}',{$A['content_length']},'{$A['title']}','{$A['description']}','{$A['feedlogo']}','{$A['filename']}','{$A['charset']}','{$A['language']}',{$A['is_enabled']},'0000-00-00 00:00:00',NULL");
    if ($A['fid'] == 0) {
        $A['fid'] = DB_insertId();
    }
    if ($A['is_enabled'] == 1) {
        SYND_updateFeed($A['fid']);
    } else {
        deleteFeedFile($A['filename']);
    }
    return COM_refresh($_CONF['site_admin_url'] . '/syndication.php?msg=58');
}