/** * 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'); }
/** * 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'); }