mirror of
https://github.com/ElvishArtisan/rivendell.git
synced 2025-05-30 07:32:32 +02:00
2020-03-16 Fred Gleason <fredg@paravelsystems.com>
* Added an 'RSS_SCHEMAS' table to the database. * Incremented the database version to 319. * Added an 'RSS Schema' dropdown to the 'Edit Feed' dialog in rdadmin(1).
This commit is contained in:
parent
9eb6b5fae3
commit
ff93b583f4
@ -19825,3 +19825,8 @@
|
||||
'RDFeed::setChannelEditor()' methods.
|
||||
* Added an 'Editor' control to the 'Channel' controls in the
|
||||
'Edit Feed' dialog in rdadmin(1).
|
||||
2020-03-16 Fred Gleason <fredg@paravelsystems.com>
|
||||
* Added an 'RSS_SCHEMAS' table to the database.
|
||||
* Incremented the database version to 319.
|
||||
* Added an 'RSS Schema' dropdown to the 'Edit Feed' dialog in
|
||||
rdadmin(1).
|
||||
|
@ -2,7 +2,7 @@
|
||||
##
|
||||
## docs/tables/automake.am for Rivendell
|
||||
##
|
||||
## (C) Copyright 2002-2018 Fred Gleason <fredg@salemradiolabs.com>
|
||||
## (C) Copyright 2002-2020 Fred Gleason <fredg@salemradiolabs.com>
|
||||
##
|
||||
## This program is free software; you can redistribute it and/or modify
|
||||
## it under the terms of the GNU General Public License version 2 as
|
||||
@ -91,6 +91,7 @@ EXTRA_DIST = audio_cards.txt\
|
||||
report_services.txt\
|
||||
report_stations.txt\
|
||||
reports.txt\
|
||||
rss_schemas.txt\
|
||||
rule_lines.txt\
|
||||
service_clocks.txt\
|
||||
service_perms.txt\
|
||||
|
@ -21,6 +21,7 @@ BASE_PREAMBLE varchar(191)
|
||||
PURGE_URL varchar(191)
|
||||
PURGE_USERNAME varchar(64)
|
||||
PURGE_PASSWORD varchar(64)
|
||||
RSS_SCHEMA int(10) unsigned From RSS_SCHEMAS.ID
|
||||
HEADER_XML text
|
||||
CHANNEL_XML text
|
||||
ITEM_XML text
|
||||
|
11
docs/tables/rss_schemas.txt
Normal file
11
docs/tables/rss_schemas.txt
Normal file
@ -0,0 +1,11 @@
|
||||
RSS_SCHEMAS Table Layout for Rivendell
|
||||
|
||||
The RSS_SCHEMAS table holds template data for various RSS schemas.
|
||||
|
||||
FIELD NAME TYPE REMARKS
|
||||
---------------------------------------------------------------
|
||||
ID int(10) unsigned Primary Key
|
||||
NAME varchar(64)
|
||||
HEADER_XML text From FEEDS.HEADER_XML
|
||||
CHANNEL_XML text From FEEDS.CHANNEL_XML
|
||||
ITEM_XML text From FEEDS.ITEM_XML
|
@ -24,7 +24,7 @@
|
||||
/*
|
||||
* Current Database Version
|
||||
*/
|
||||
#define RD_VERSION_DATABASE 318
|
||||
#define RD_VERSION_DATABASE 319
|
||||
|
||||
|
||||
#endif // DBVERSION_H
|
||||
|
171
lib/rdfeed.cpp
171
lib/rdfeed.cpp
@ -359,6 +359,19 @@ void RDFeed::setPurgePassword(const QString &str) const
|
||||
}
|
||||
|
||||
|
||||
RDFeed::RssSchema RDFeed::rssSchema() const
|
||||
{
|
||||
return (RDFeed::RssSchema)RDGetSqlValue("FEEDS","KEY_NAME",feed_keyname,
|
||||
"RSS_SCHEMA").toUInt();
|
||||
}
|
||||
|
||||
|
||||
void RDFeed::setRssSchema(RDFeed::RssSchema schema) const
|
||||
{
|
||||
SetRow("RSS_SCHEMA",(unsigned)schema);
|
||||
}
|
||||
|
||||
|
||||
QString RDFeed::headerXml() const
|
||||
{
|
||||
return RDGetSqlValue("FEEDS","KEY_NAME",feed_keyname,"HEADER_XML").
|
||||
@ -991,36 +1004,45 @@ QString RDFeed::rssXml(QString *err_msg,bool *ok)
|
||||
QString sql;
|
||||
RDSqlQuery *q;
|
||||
RDSqlQuery *q1;
|
||||
RDFeed::RssSchema rss_schema=rssSchema();
|
||||
QString schema_table="RSS_SCHEMAS";
|
||||
|
||||
if(ok!=NULL) {
|
||||
*ok=false;
|
||||
}
|
||||
if(rss_schema==RDFeed::CustomSchema) {
|
||||
schema_table="FEEDS";
|
||||
}
|
||||
sql=QString("select ")+
|
||||
"CHANNEL_TITLE,"+ // 00
|
||||
"CHANNEL_DESCRIPTION,"+ // 01
|
||||
"CHANNEL_CATEGORY,"+ // 02
|
||||
"CHANNEL_LINK,"+ // 03
|
||||
"CHANNEL_COPYRIGHT,"+ // 04
|
||||
|
||||
"CHANNEL_EDITOR,"+ // 05
|
||||
|
||||
"CHANNEL_WEBMASTER,"+ // 06
|
||||
"CHANNEL_LANGUAGE,"+ // 07
|
||||
"LAST_BUILD_DATETIME,"+ // 08
|
||||
"ORIGIN_DATETIME,"+ // 09
|
||||
"HEADER_XML,"+ // 10
|
||||
"CHANNEL_XML,"+ // 11
|
||||
"ITEM_XML,"+ // 12
|
||||
"BASE_URL,"+ // 13
|
||||
"ID,"+ // 14
|
||||
"UPLOAD_EXTENSION,"+ // 15
|
||||
"CAST_ORDER,"+ // 16
|
||||
"REDIRECT_PATH,"+ // 17
|
||||
"BASE_PREAMBLE,"+ // 18
|
||||
"AUDIENCE_METRICS,"+ // 19
|
||||
"IS_SUPERFEED "+ // 20
|
||||
"from FEEDS where "+
|
||||
"KEY_NAME=\""+RDEscapeString(keyName())+"\"";
|
||||
"FEEDS.CHANNEL_TITLE,"+ // 00
|
||||
"FEEDS.CHANNEL_DESCRIPTION,"+ // 01
|
||||
"FEEDS.CHANNEL_CATEGORY,"+ // 02
|
||||
"FEEDS.CHANNEL_LINK,"+ // 03
|
||||
"FEEDS.CHANNEL_COPYRIGHT,"+ // 04
|
||||
"FEEDS.CHANNEL_EDITOR,"+ // 05
|
||||
"FEEDS.CHANNEL_WEBMASTER,"+ // 06
|
||||
"FEEDS.CHANNEL_LANGUAGE,"+ // 07
|
||||
"FEEDS.LAST_BUILD_DATETIME,"+ // 08
|
||||
"FEEDS.ORIGIN_DATETIME,"+ // 09
|
||||
schema_table+".HEADER_XML,"+ // 10
|
||||
schema_table+".CHANNEL_XML,"+ // 11
|
||||
schema_table+".ITEM_XML,"+ // 12
|
||||
"FEEDS.BASE_URL,"+ // 13
|
||||
"FEEDS.ID,"+ // 14
|
||||
"FEEDS.UPLOAD_EXTENSION,"+ // 15
|
||||
"FEEDS.CAST_ORDER,"+ // 16
|
||||
"FEEDS.REDIRECT_PATH,"+ // 17
|
||||
"FEEDS.BASE_PREAMBLE,"+ // 18
|
||||
"FEEDS.AUDIENCE_METRICS,"+ // 19
|
||||
"FEEDS.IS_SUPERFEED "; // 20
|
||||
if(rss_schema==RDFeed::CustomSchema) {
|
||||
sql+="from FEEDS where ";
|
||||
}
|
||||
else {
|
||||
sql+=QString("from FEEDS left join RSS_SCHEMAS ")+
|
||||
"on FEEDS.RSS_SCHEMA=RSS_SCHEMAS.ID where ";
|
||||
}
|
||||
sql+="FEEDS.KEY_NAME=\""+RDEscapeString(keyName())+"\"";
|
||||
q=new RDSqlQuery(sql);
|
||||
if(!q->first()) {
|
||||
*err_msg="no feed matches the supplied key name";
|
||||
@ -1298,6 +1320,103 @@ QString RDFeed::errorString(RDFeed::Error err)
|
||||
}
|
||||
|
||||
|
||||
QString RDFeed::rssSchemaString(RDFeed::RssSchema schema)
|
||||
{
|
||||
QString ret="Unknown";
|
||||
|
||||
switch(schema) {
|
||||
case RDFeed::CustomSchema:
|
||||
ret="[custom schema]";
|
||||
break;
|
||||
|
||||
case RDFeed::Rss202Schema:
|
||||
ret="RSS 2.0.2";
|
||||
break;
|
||||
|
||||
case RDFeed::LastSchema:
|
||||
break;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
QString RDFeed::rssHeaderTemplate(RDFeed::RssSchema schema)
|
||||
{
|
||||
QString ret;
|
||||
|
||||
switch(schema) {
|
||||
case RDFeed::Rss202Schema:
|
||||
ret=QString("<?xml version=\"1.0\" encoding=\"UTF-8\"?>")+"\n"+
|
||||
"<rss version=\"2.0\" xmlns:atom=\"http://www.w3.org/2005/Atom\">\n";
|
||||
break;
|
||||
|
||||
case RDFeed::CustomSchema:
|
||||
case RDFeed::LastSchema:
|
||||
break;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
QString RDFeed::rssChannelTemplate(RDFeed::RssSchema schema)
|
||||
{
|
||||
QString ret;
|
||||
|
||||
switch(schema) {
|
||||
case RDFeed::Rss202Schema:
|
||||
ret=QString("<title>%TITLE%</title>\n")+
|
||||
"<description>%DESCRIPTION%</description>\n"+
|
||||
"<category>%CATEGORY%</category>\n"+
|
||||
"<link>%LINK%</link>\n"+
|
||||
"<language>%LANGUAGE%</language>\n"+
|
||||
"<copyright>%COPYRIGHT%</copyright>\n"+
|
||||
"<lastBuildDate>%BUILD_DATE%</lastBuildDate>\n"+
|
||||
"<pubDate>%PUBLISH_DATE%</pubDate>\n"+
|
||||
"<managingEditor>%EDITOR%</managingEditor>\n"+
|
||||
"<webMaster>%WEBMASTER%</webMaster>\n"+
|
||||
"<generator>%GENERATOR%</generator>\n"+
|
||||
"<image>%IMAGE%</image>\n"+
|
||||
"<atom:link href=\"%FEED_URL%\" rel=\"self\" type=\"application/rss+xml\" />\n";
|
||||
break;
|
||||
|
||||
case RDFeed::CustomSchema:
|
||||
case RDFeed::LastSchema:
|
||||
break;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
QString RDFeed::rssItemTemplate(RDFeed::RssSchema schema)
|
||||
{
|
||||
QString ret;
|
||||
|
||||
switch(schema) {
|
||||
case RDFeed::Rss202Schema:
|
||||
ret=QString("<title>%ITEM_TITLE%</title>\n")+
|
||||
"<link>%ITEM_LINK%</link>\n"+
|
||||
"<guid isPermaLink=\"false\">%ITEM_GUID%</guid>\n"+
|
||||
"<description>%ITEM_DESCRIPTION%</description>\n"+
|
||||
"<author>%ITEM_AUTHOR%</author>\n"+
|
||||
"<comments>%ITEM_COMMENTS%</comments>\n"+
|
||||
"<source url=\"%ITEM_SOURCE_URL%\">%ITEM_SOURCE_TEXT%</source>\n"+
|
||||
"<enclosure url=\"%ITEM_AUDIO_URL%\" length=\"%ITEM_AUDIO_LENGTH%\" type=\"audio/mpeg\" />\n"+
|
||||
"<category>%ITEM_CATEGORY%</category>\n"+
|
||||
"<pubDate>%ITEM_PUBLISH_DATE%</pubDate>\n";
|
||||
break;
|
||||
|
||||
case RDFeed::CustomSchema:
|
||||
case RDFeed::LastSchema:
|
||||
break;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
unsigned RDFeed::CreateCast(QString *filename,int bytes,int msecs) const
|
||||
{
|
||||
QString sql;
|
||||
@ -1391,7 +1510,7 @@ QString RDFeed::ResolveChannelWildcards(RDSqlQuery *chan_q)
|
||||
|
||||
QString RDFeed::ResolveItemWildcards(RDSqlQuery *item_q,RDSqlQuery *chan_q)
|
||||
{
|
||||
QString ret=" "+chan_q->value(11).toString();
|
||||
QString ret=" "+chan_q->value(12).toString();
|
||||
|
||||
ret.replace("\n","\r\n ");
|
||||
ret.replace("%ITEM_TITLE%",RDXmlEscape(item_q->value(0).toString()));
|
||||
|
@ -39,6 +39,7 @@ class RDFeed : public QObject
|
||||
enum Error {ErrorOk=0,ErrorNoFile=1,ErrorCannotOpenFile=2,
|
||||
ErrorUnsupportedType=3,ErrorUploadFailed=4,ErrorGeneral=5};
|
||||
enum MediaLinkMode {LinkNone=0,LinkDirect=1,LinkCounted=2};
|
||||
enum RssSchema {CustomSchema=0,Rss202Schema=1,LastSchema=2};
|
||||
RDFeed(const QString &keyname,RDConfig *config,QObject *parent=0);
|
||||
RDFeed(unsigned id,RDConfig *config,QObject *parent=0);
|
||||
QString keyName() const;
|
||||
@ -76,6 +77,8 @@ class RDFeed : public QObject
|
||||
void setPurgeUsername(const QString &str) const;
|
||||
QString purgePassword() const;
|
||||
void setPurgePassword(const QString &str) const;
|
||||
RssSchema rssSchema() const;
|
||||
void setRssSchema(RssSchema schema) const;
|
||||
QString headerXml() const;
|
||||
void setHeaderXml(const QString &str);
|
||||
QString channelXml() const;
|
||||
@ -130,6 +133,10 @@ class RDFeed : public QObject
|
||||
static unsigned create(const QString &keyname,bool enable_users,
|
||||
QString *err_msg,const QString &exemplar="");
|
||||
static QString errorString(RDFeed::Error err);
|
||||
static QString rssSchemaString(RDFeed::RssSchema schema);
|
||||
static QString rssHeaderTemplate(RssSchema schema);
|
||||
static QString rssChannelTemplate(RssSchema schema);
|
||||
static QString rssItemTemplate(RssSchema schema);
|
||||
|
||||
signals:
|
||||
void postProgressChanged(int step);
|
||||
|
@ -39,6 +39,9 @@
|
||||
EditFeed::EditFeed(const QString &feed,QWidget *parent)
|
||||
: RDDialog(parent)
|
||||
{
|
||||
QString sql;
|
||||
RDSqlQuery *q=NULL;
|
||||
|
||||
//
|
||||
// Fix the Window Size
|
||||
//
|
||||
@ -63,7 +66,7 @@ EditFeed::EditFeed(const QString &feed,QWidget *parent)
|
||||
feed_is_superfeed_box->insertItem(0,tr("No"));
|
||||
feed_is_superfeed_box->insertItem(1,tr("Yes"));
|
||||
connect(feed_is_superfeed_box,SIGNAL(activated(int)),
|
||||
this,SLOT(isSuperfeedChangedData(int)));
|
||||
this,SLOT(comboboxActivatedData(int)));
|
||||
feed_is_superfeed_label=new QLabel(tr("Is Superfeed")+":",this);
|
||||
feed_is_superfeed_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
|
||||
feed_is_superfeed_label->setFont(labelFont());
|
||||
@ -183,7 +186,7 @@ EditFeed::EditFeed(const QString &feed,QWidget *parent)
|
||||
feed_purge_username_edit=new QLineEdit(this);
|
||||
feed_purge_username_edit->setMaxLength(64);
|
||||
connect(feed_purge_username_edit,SIGNAL(textChanged(const QString &)),
|
||||
this,SLOT(purgeUsernameChangedData(const QString &)));
|
||||
this,SLOT(lineeditChangedData(const QString &)));
|
||||
feed_purge_username_label=
|
||||
new QLabel(feed_purge_username_edit,tr("Username:"),this);
|
||||
feed_purge_username_label->setFont(labelFont());
|
||||
@ -216,14 +219,14 @@ EditFeed::EditFeed(const QString &feed,QWidget *parent)
|
||||
//
|
||||
// Normalize Check Box
|
||||
//
|
||||
feed_normalize_box=new QCheckBox(this);
|
||||
feed_normalize_box->setChecked(true);
|
||||
feed_normalize_check=new QCheckBox(this);
|
||||
feed_normalize_check->setChecked(true);
|
||||
feed_normalize_check_label=
|
||||
new QLabel(feed_normalize_box,tr("Normalize"),this);
|
||||
new QLabel(feed_normalize_check,tr("Normalize"),this);
|
||||
feed_normalize_check_label->setFont(labelFont());
|
||||
feed_normalize_check_label->setAlignment(Qt::AlignLeft|Qt::AlignVCenter);
|
||||
connect(feed_normalize_box,SIGNAL(toggled(bool)),
|
||||
this,SLOT(normalizeCheckData(bool)));
|
||||
connect(feed_normalize_check,SIGNAL(toggled(bool)),
|
||||
this,SLOT(checkboxToggledData(bool)));
|
||||
|
||||
//
|
||||
// Normalize Level
|
||||
@ -339,6 +342,27 @@ EditFeed::EditFeed(const QString &feed,QWidget *parent)
|
||||
feed_redirect_url_label->setFont(labelFont());
|
||||
feed_redirect_url_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
|
||||
|
||||
//
|
||||
// RSS Schema
|
||||
//
|
||||
feed_rss_schema_box=new QComboBox(this);
|
||||
sql=QString("select ")+
|
||||
"ID,"+ // 00
|
||||
"NAME "+ // 01
|
||||
"from RSS_SCHEMAS order by NAME";
|
||||
q=new RDSqlQuery(sql);
|
||||
while(q->next()) {
|
||||
feed_rss_schema_box->
|
||||
insertItem(feed_rss_schema_box->count(),q->value(1).toString(),
|
||||
q->value(0).toUInt());
|
||||
}
|
||||
delete q;
|
||||
connect(feed_rss_schema_box,SIGNAL(activated(int)),
|
||||
this,SLOT(comboboxActivatedData(int)));
|
||||
feed_rss_schema_label=new QLabel(tr("RSS Schema")+":",this);
|
||||
feed_rss_schema_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
|
||||
feed_rss_schema_label->setFont(labelFont());
|
||||
|
||||
//
|
||||
// Header XML
|
||||
//
|
||||
@ -403,6 +427,13 @@ EditFeed::EditFeed(const QString &feed,QWidget *parent)
|
||||
feed_purge_url_edit->setText(feed_feed->purgeUrl());
|
||||
feed_purge_username_edit->setText(feed_feed->purgeUsername());
|
||||
feed_purge_password_edit->setText(feed_feed->purgePassword());
|
||||
RDFeed::RssSchema schema=feed_feed->rssSchema();
|
||||
for(int i=0;i<feed_rss_schema_box->count();i++) {
|
||||
if(feed_rss_schema_box->itemData(i).toInt()==schema) {
|
||||
feed_rss_schema_box->setCurrentItem(i);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
feed_header_xml_edit->setPlainText(feed_feed->headerXml());
|
||||
feed_channel_xml_edit->setPlainText(feed_feed->channelXml());
|
||||
feed_item_xml_edit->setPlainText(feed_feed->itemXml());
|
||||
@ -417,21 +448,21 @@ EditFeed::EditFeed(const QString &feed,QWidget *parent)
|
||||
feed_extension_edit->setText(feed_feed->uploadExtension());
|
||||
feed_format_edit->setText(feed_settings.description());
|
||||
if(feed_feed->normalizeLevel()>0) {
|
||||
feed_normalize_box->setChecked(false);
|
||||
feed_normalize_check->setChecked(false);
|
||||
}
|
||||
else {
|
||||
feed_normalize_box->setChecked(true);
|
||||
feed_normalize_check->setChecked(true);
|
||||
feed_normalize_spin->setValue(feed_feed->normalizeLevel()/1000);
|
||||
}
|
||||
feed_castorder_box->setCurrentItem(feed_feed->castOrder());
|
||||
feed_media_link_mode_box->setCurrentItem((int)feed_feed->mediaLinkMode());
|
||||
feed_redirect_url_edit->setText(feed_feed->redirectPath());
|
||||
feed_redirect_check->setChecked(!feed_redirect_url_edit->text().isEmpty());
|
||||
normalizeCheckData(feed_normalize_box->isChecked());
|
||||
|
||||
isSuperfeedChangedData(0);
|
||||
connect(feed_redirect_check,SIGNAL(toggled(bool)),
|
||||
this,SLOT(redirectToggledData(bool)));
|
||||
|
||||
UpdateControlState();
|
||||
}
|
||||
|
||||
|
||||
@ -447,84 +478,22 @@ QSizePolicy EditFeed::sizePolicy() const
|
||||
}
|
||||
|
||||
|
||||
void EditFeed::isSuperfeedChangedData(int n)
|
||||
|
||||
void EditFeed::comboboxActivatedData(int n)
|
||||
{
|
||||
bool superfeed=feed_is_superfeed_box->currentIndex();
|
||||
bool redirected=feed_redirect_check->isChecked();
|
||||
UpdateControlState();
|
||||
}
|
||||
|
||||
feed_is_superfeed_label->setDisabled(redirected);
|
||||
feed_is_superfeed_box->setDisabled(redirected);
|
||||
feed_is_superfeed_button->setDisabled(redirected||(!superfeed));
|
||||
|
||||
feed_audience_metrics_check->setDisabled(redirected);
|
||||
feed_audience_metrics_label->setDisabled(redirected);
|
||||
void EditFeed::checkboxToggledData(bool state)
|
||||
{
|
||||
UpdateControlState();
|
||||
}
|
||||
|
||||
feed_channel_title_edit->setDisabled(redirected);
|
||||
feed_channel_description_edit->setDisabled(redirected);
|
||||
feed_channel_category_edit->setDisabled(redirected);
|
||||
feed_channel_link_edit->setDisabled(redirected);
|
||||
feed_channel_copyright_edit->setDisabled(redirected);
|
||||
feed_channel_editor_label->setDisabled(redirected);
|
||||
feed_channel_editor_edit->setDisabled(redirected);
|
||||
feed_channel_webmaster_label->setDisabled(redirected);
|
||||
feed_channel_webmaster_edit->setDisabled(redirected);
|
||||
feed_channel_language_edit->setDisabled(redirected);
|
||||
feed_channel_title_label->setDisabled(redirected);
|
||||
feed_channel_category_label->setDisabled(redirected);
|
||||
feed_channel_link_label->setDisabled(redirected);
|
||||
feed_channel_copyright_label->setDisabled(redirected);
|
||||
feed_channel_language_label->setDisabled(redirected);
|
||||
feed_channel_description_label->setDisabled(redirected);
|
||||
|
||||
feed_redirect_url_label->setEnabled(redirected);
|
||||
feed_redirect_url_edit->setEnabled(redirected);
|
||||
|
||||
feed_base_url_edit->setDisabled(redirected);
|
||||
feed_purge_url_edit->setDisabled(redirected);
|
||||
feed_purge_username_label->setDisabled(redirected);
|
||||
feed_purge_username_edit->setDisabled(redirected);
|
||||
feed_purge_password_label->setDisabled(redirected);
|
||||
feed_purge_password_edit->setDisabled(redirected);
|
||||
|
||||
feed_max_shelf_life_spin->setDisabled(redirected||superfeed);
|
||||
feed_autopost_box->setDisabled(redirected||superfeed);
|
||||
feed_keep_metadata_box->setDisabled(redirected);
|
||||
feed_keep_metadata_label->setDisabled(redirected);
|
||||
feed_format_edit->setDisabled(redirected||superfeed);
|
||||
feed_normalize_box->setDisabled(redirected||superfeed);
|
||||
feed_extension_edit->setDisabled(redirected||superfeed);
|
||||
feed_castorder_box->setDisabled(redirected);
|
||||
feed_format_button->setDisabled(redirected||superfeed);
|
||||
feed_base_url_label->setDisabled(redirected);
|
||||
feed_base_preamble_label->setDisabled(redirected);
|
||||
feed_purge_url_label->setDisabled(redirected);
|
||||
feed_max_shelf_life_label->setDisabled(redirected||superfeed);
|
||||
feed_max_shelf_life_unit_label->setDisabled(redirected||superfeed);
|
||||
feed_autopost_label->setDisabled(redirected||superfeed);
|
||||
feed_format_label->setDisabled(redirected||superfeed);
|
||||
feed_normalize_check_label->setDisabled(redirected||superfeed);
|
||||
feed_normalize_unit_label->setDisabled(redirected||superfeed);
|
||||
feed_castorder_label->setDisabled(redirected);
|
||||
feed_extension_label->setDisabled(redirected||superfeed);
|
||||
feed_channel_section_groupbox->setDisabled(redirected);
|
||||
|
||||
feed_normalize_label->
|
||||
setDisabled(redirected||superfeed||(!feed_normalize_box->isChecked()));
|
||||
feed_normalize_spin->
|
||||
setDisabled(redirected||superfeed||(!feed_normalize_box->isChecked()));
|
||||
feed_normalize_unit_label->
|
||||
setDisabled(redirected||superfeed||(!feed_normalize_box->isChecked()));
|
||||
feed_media_link_mode_box->setDisabled(redirected||superfeed);
|
||||
feed_media_link_mode_label->setDisabled(redirected||superfeed);
|
||||
|
||||
feed_header_xml_label->setDisabled(redirected);
|
||||
feed_header_xml_edit->setDisabled(redirected);
|
||||
|
||||
feed_channel_xml_label->setDisabled(redirected);
|
||||
feed_channel_xml_edit->setDisabled(redirected);
|
||||
|
||||
feed_item_xml_label->setDisabled(redirected|superfeed);
|
||||
feed_item_xml_edit->setDisabled(redirected||superfeed);
|
||||
void EditFeed::lineeditChangedData(const QString &str)
|
||||
{
|
||||
UpdateControlState();
|
||||
}
|
||||
|
||||
|
||||
@ -536,17 +505,6 @@ void EditFeed::selectSubfeedsData()
|
||||
}
|
||||
|
||||
|
||||
void EditFeed::purgeUsernameChangedData(const QString &username)
|
||||
{
|
||||
feed_purge_password_label->
|
||||
setDisabled(username.isEmpty()||feed_purge_url_edit->text().isEmpty()||
|
||||
feed_redirect_check->isChecked());
|
||||
feed_purge_password_edit->
|
||||
setDisabled(username.isEmpty()||feed_purge_url_edit->text().isEmpty()||
|
||||
feed_redirect_check->isChecked());
|
||||
}
|
||||
|
||||
|
||||
void EditFeed::setFormatData()
|
||||
{
|
||||
RDExportSettingsDialog *dialog=
|
||||
@ -557,13 +515,6 @@ void EditFeed::setFormatData()
|
||||
}
|
||||
|
||||
|
||||
void EditFeed::normalizeCheckData(bool state)
|
||||
{
|
||||
feed_normalize_label->setEnabled(state);
|
||||
feed_normalize_spin->setEnabled(state);
|
||||
feed_normalize_unit_label->setEnabled(state);
|
||||
}
|
||||
|
||||
void EditFeed::redirectToggledData(bool state)
|
||||
{
|
||||
if(state) {
|
||||
@ -577,7 +528,7 @@ void EditFeed::redirectToggledData(bool state)
|
||||
return;
|
||||
}
|
||||
}
|
||||
isSuperfeedChangedData(0);
|
||||
UpdateControlState();
|
||||
}
|
||||
|
||||
|
||||
@ -624,6 +575,9 @@ void EditFeed::okData()
|
||||
feed_feed->setPurgeUrl(feed_purge_url_edit->text());
|
||||
feed_feed->setPurgeUsername(feed_purge_username_edit->text());
|
||||
feed_feed->setPurgePassword(feed_purge_password_edit->text());
|
||||
feed_feed->
|
||||
setRssSchema((RDFeed::RssSchema)feed_rss_schema_box->
|
||||
itemData(feed_rss_schema_box->currentIndex()).toUInt());
|
||||
feed_feed->setHeaderXml(feed_header_xml_edit->text());
|
||||
feed_feed->setChannelXml(feed_channel_xml_edit->text());
|
||||
feed_feed->setItemXml(feed_item_xml_edit->text());
|
||||
@ -638,7 +592,7 @@ void EditFeed::okData()
|
||||
feed_feed->setUploadBitRate(feed_settings.bitRate());
|
||||
feed_feed->setUploadQuality(feed_settings.quality());
|
||||
feed_feed->setUploadExtension(feed_extension_edit->text());
|
||||
if(feed_normalize_box->isChecked()) {
|
||||
if(feed_normalize_check->isChecked()) {
|
||||
feed_feed->setNormalizeLevel(feed_normalize_spin->value()*1000);
|
||||
}
|
||||
else {
|
||||
@ -703,7 +657,7 @@ void EditFeed::resizeEvent(QResizeEvent *e)
|
||||
feed_format_label->setGeometry(5,398,145,20);
|
||||
feed_format_button->setGeometry(450,398,40,24);
|
||||
|
||||
feed_normalize_box->setGeometry(155,422,15,15);
|
||||
feed_normalize_check->setGeometry(155,422,15,15);
|
||||
feed_normalize_check_label->setGeometry(175,420,83,20);
|
||||
feed_normalize_spin->setGeometry(295,418,40,20);
|
||||
feed_normalize_label->setGeometry(245,418,45,20);
|
||||
@ -737,15 +691,111 @@ void EditFeed::resizeEvent(QResizeEvent *e)
|
||||
feed_redirect_url_edit->setGeometry(85,626,405,20);
|
||||
feed_redirect_url_label->setGeometry(40,626,40,19);
|
||||
|
||||
feed_header_xml_edit->setGeometry(615,10,size().width()-625,76);
|
||||
feed_header_xml_label->setGeometry(520,10,90,19);
|
||||
feed_rss_schema_label->setGeometry(520,10,90,19);
|
||||
feed_rss_schema_box->setGeometry(615,10,200,19);
|
||||
|
||||
feed_channel_xml_edit->setGeometry(615,88,size().width()-625,216);
|
||||
feed_channel_xml_label->setGeometry(520,88,90,19);
|
||||
feed_header_xml_label->setGeometry(520,32,90,19);
|
||||
feed_header_xml_edit->setGeometry(615,32,size().width()-625,76);
|
||||
|
||||
feed_item_xml_edit->setGeometry(615,310,size().width()-625,240);
|
||||
feed_item_xml_label->setGeometry(520,310,90,19);
|
||||
feed_channel_xml_label->setGeometry(520,110,90,19);
|
||||
feed_channel_xml_edit->setGeometry(615,110,size().width()-625,216);
|
||||
|
||||
feed_item_xml_label->setGeometry(520,332,90,19);
|
||||
feed_item_xml_edit->setGeometry(615,332,size().width()-625,240);
|
||||
|
||||
feed_ok_button->setGeometry(size().width()-180,size().height()-60,80,50);
|
||||
feed_cancel_button->setGeometry(size().width()-90,size().height()-60,80,50);
|
||||
}
|
||||
|
||||
|
||||
void EditFeed::UpdateControlState()
|
||||
{
|
||||
bool superfeed=feed_is_superfeed_box->currentIndex();
|
||||
bool redirected=feed_redirect_check->isChecked();
|
||||
bool custom_schema=
|
||||
feed_rss_schema_box->itemData(feed_rss_schema_box->currentIndex()).toInt()==
|
||||
RDFeed::CustomSchema;
|
||||
|
||||
feed_is_superfeed_label->setDisabled(redirected);
|
||||
feed_is_superfeed_box->setDisabled(redirected);
|
||||
feed_is_superfeed_button->setDisabled(redirected||(!superfeed));
|
||||
|
||||
feed_audience_metrics_check->setDisabled(redirected);
|
||||
feed_audience_metrics_label->setDisabled(redirected);
|
||||
|
||||
feed_channel_title_edit->setDisabled(redirected);
|
||||
feed_channel_description_edit->setDisabled(redirected);
|
||||
feed_channel_category_edit->setDisabled(redirected);
|
||||
feed_channel_link_edit->setDisabled(redirected);
|
||||
feed_channel_copyright_edit->setDisabled(redirected);
|
||||
feed_channel_editor_label->setDisabled(redirected);
|
||||
feed_channel_editor_edit->setDisabled(redirected);
|
||||
feed_channel_webmaster_label->setDisabled(redirected);
|
||||
feed_channel_webmaster_edit->setDisabled(redirected);
|
||||
feed_channel_language_edit->setDisabled(redirected);
|
||||
feed_channel_title_label->setDisabled(redirected);
|
||||
feed_channel_category_label->setDisabled(redirected);
|
||||
feed_channel_link_label->setDisabled(redirected);
|
||||
feed_channel_copyright_label->setDisabled(redirected);
|
||||
feed_channel_language_label->setDisabled(redirected);
|
||||
feed_channel_description_label->setDisabled(redirected);
|
||||
|
||||
feed_redirect_url_label->setEnabled(redirected);
|
||||
feed_redirect_url_edit->setEnabled(redirected);
|
||||
|
||||
feed_base_url_edit->setDisabled(redirected);
|
||||
feed_purge_url_edit->setDisabled(redirected);
|
||||
feed_purge_username_label->setDisabled(redirected);
|
||||
feed_purge_username_edit->setDisabled(redirected);
|
||||
feed_purge_password_label->setDisabled(redirected);
|
||||
feed_purge_password_edit->setDisabled(redirected);
|
||||
|
||||
feed_max_shelf_life_spin->setDisabled(redirected||superfeed);
|
||||
feed_autopost_box->setDisabled(redirected||superfeed);
|
||||
feed_keep_metadata_box->setDisabled(redirected);
|
||||
feed_keep_metadata_label->setDisabled(redirected);
|
||||
feed_format_edit->setDisabled(redirected||superfeed);
|
||||
feed_normalize_check->setDisabled(redirected||superfeed);
|
||||
feed_extension_edit->setDisabled(redirected||superfeed);
|
||||
feed_castorder_box->setDisabled(redirected);
|
||||
feed_format_button->setDisabled(redirected||superfeed);
|
||||
feed_base_url_label->setDisabled(redirected);
|
||||
feed_base_preamble_label->setDisabled(redirected);
|
||||
feed_purge_url_label->setDisabled(redirected);
|
||||
feed_max_shelf_life_label->setDisabled(redirected||superfeed);
|
||||
feed_max_shelf_life_unit_label->setDisabled(redirected||superfeed);
|
||||
feed_autopost_label->setDisabled(redirected||superfeed);
|
||||
feed_format_label->setDisabled(redirected||superfeed);
|
||||
feed_normalize_check_label->setDisabled(redirected||superfeed);
|
||||
feed_normalize_unit_label->setDisabled(redirected||superfeed);
|
||||
feed_castorder_label->setDisabled(redirected);
|
||||
feed_extension_label->setDisabled(redirected||superfeed);
|
||||
feed_channel_section_groupbox->setDisabled(redirected);
|
||||
|
||||
feed_normalize_label->
|
||||
setDisabled(redirected||superfeed||(!feed_normalize_check->isChecked()));
|
||||
feed_normalize_spin->
|
||||
setDisabled(redirected||superfeed||(!feed_normalize_check->isChecked()));
|
||||
feed_normalize_unit_label->
|
||||
setDisabled(redirected||superfeed||(!feed_normalize_check->isChecked()));
|
||||
feed_media_link_mode_box->setDisabled(redirected||superfeed);
|
||||
feed_media_link_mode_label->setDisabled(redirected||superfeed);
|
||||
|
||||
feed_header_xml_label->setDisabled(redirected||(!custom_schema));
|
||||
feed_header_xml_edit->setDisabled(redirected||(!custom_schema));
|
||||
|
||||
feed_channel_xml_label->setDisabled(redirected||(!custom_schema));
|
||||
feed_channel_xml_edit->setDisabled(redirected||(!custom_schema));
|
||||
|
||||
feed_item_xml_label->setDisabled(redirected||superfeed||(!custom_schema));
|
||||
feed_item_xml_edit->setDisabled(redirected||superfeed||(!custom_schema));
|
||||
|
||||
feed_purge_password_label->
|
||||
setDisabled(feed_purge_username_edit->text().isEmpty()||
|
||||
feed_purge_url_edit->text().isEmpty()||
|
||||
feed_redirect_check->isChecked());
|
||||
feed_purge_password_edit->
|
||||
setDisabled(feed_purge_username_edit->text().isEmpty()||
|
||||
feed_purge_url_edit->text().isEmpty()||
|
||||
feed_redirect_check->isChecked());
|
||||
}
|
||||
|
@ -44,11 +44,12 @@ class EditFeed : public RDDialog
|
||||
QSizePolicy sizePolicy() const;
|
||||
|
||||
private slots:
|
||||
void isSuperfeedChangedData(int n);
|
||||
// void isSuperfeedChangedData(int n);
|
||||
void comboboxActivatedData(int n);
|
||||
void checkboxToggledData(bool state);
|
||||
void lineeditChangedData(const QString &str);
|
||||
void selectSubfeedsData();
|
||||
void purgeUsernameChangedData(const QString &username);
|
||||
void setFormatData();
|
||||
void normalizeCheckData(bool state);
|
||||
void redirectToggledData(bool state);
|
||||
void okData();
|
||||
void cancelData();
|
||||
@ -57,6 +58,7 @@ class EditFeed : public RDDialog
|
||||
void resizeEvent(QResizeEvent *e);
|
||||
|
||||
private:
|
||||
void UpdateControlState();
|
||||
RDFeed *feed_feed;
|
||||
QLabel *feed_keyname_label;
|
||||
QLineEdit *feed_keyname_edit;
|
||||
@ -82,6 +84,8 @@ class EditFeed : public RDDialog
|
||||
QLineEdit *feed_purge_username_edit;
|
||||
QLabel *feed_purge_password_label;
|
||||
QLineEdit *feed_purge_password_edit;
|
||||
QLabel *feed_rss_schema_label;
|
||||
QComboBox *feed_rss_schema_box;
|
||||
QTextEdit *feed_header_xml_edit;
|
||||
QTextEdit *feed_channel_xml_edit;
|
||||
QTextEdit *feed_item_xml_edit;
|
||||
@ -90,7 +94,7 @@ class EditFeed : public RDDialog
|
||||
QCheckBox *feed_keep_metadata_box;
|
||||
RDSettings feed_settings;
|
||||
QLineEdit *feed_format_edit;
|
||||
QCheckBox *feed_normalize_box;
|
||||
QCheckBox *feed_normalize_check;
|
||||
QLabel *feed_normalize_label;
|
||||
QSpinBox *feed_normalize_spin;
|
||||
QLineEdit *feed_extension_edit;
|
||||
|
@ -1669,6 +1669,10 @@ Feeds</source>
|
||||
<source>Editor:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>RSS Schema</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditFeedPerms</name>
|
||||
|
@ -1552,6 +1552,10 @@ Feeds</source>
|
||||
<source>Editor:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>RSS Schema</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditFeedPerms</name>
|
||||
|
@ -1672,6 +1672,10 @@ Feeds</source>
|
||||
<source>Editor:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>RSS Schema</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditFeedPerms</name>
|
||||
|
@ -1224,6 +1224,10 @@ Feeds</source>
|
||||
<source>Editor:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>RSS Schema</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditFeedPerms</name>
|
||||
|
@ -1514,6 +1514,10 @@ Feeds</source>
|
||||
<source>Editor:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>RSS Schema</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditFeedPerms</name>
|
||||
|
@ -1514,6 +1514,10 @@ Feeds</source>
|
||||
<source>Editor:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>RSS Schema</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditFeedPerms</name>
|
||||
|
@ -1524,6 +1524,10 @@ Feeds</source>
|
||||
<source>Editor:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>RSS Schema</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditFeedPerms</name>
|
||||
|
@ -28,6 +28,21 @@
|
||||
|
||||
#define RDDBMGR_USAGE "[options]\n"
|
||||
|
||||
//
|
||||
// RSS Templates
|
||||
//
|
||||
//
|
||||
// RSS XML Templates (for the 'RSS_SCHEMAS' table)
|
||||
//
|
||||
#define RSS_2_0_2_NAME "RSS 2.0.2"
|
||||
|
||||
#define RSS_2_0_2_HEADER_XML "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<rss version=\"2.0\" xmlns:atom=\"http://www.w3.org/2005/Atom\">"
|
||||
|
||||
#define RSS_2_0_2_CHANNEL_XML "<title>%TITLE%</title>\n<description>%DESCRIPTION%</description>\n<category>%CATEGORY%</category>\n<link>%LINK%</link>\n<language>%LANGUAGE%</language>\n<copyright>%COPYRIGHT%</copyright>\n<lastBuildDate>%BUILD_DATE%</lastBuildDate>\n<pubDate>%PUBLISH_DATE%</pubDate>\n<managingEditor>%EDITOR%</managingEditor>\n<webMaster>%WEBMASTER%</webMaster>\n<generator>%GENERATOR%</generator>\n<image>%IMAGE%</image>\n<atom:link href=\"%FEED_URL%\" rel=\"self\" type=\"application/rss+xml\" />"
|
||||
|
||||
#define RSS_2_0_2_ITEM_XML "<title>%ITEM_TITLE%</title>\n<link>%ITEM_LINK%</link>\n<guid isPermaLink=\"false\">%ITEM_GUID%</guid>\n<description>%ITEM_DESCRIPTION%</description>\n<author>%ITEM_AUTHOR%</author>\n<comments>%ITEM_COMMENTS%</comments>\n<source url=\"%ITEM_SOURCE_URL%\">%ITEM_SOURCE_TEXT%</source>\n<enclosure url=\"%ITEM_AUDIO_URL%\" length=\"%ITEM_AUDIO_LENGTH%\" type=\"audio/mpeg\" />\n<category>%ITEM_CATEGORY%</category>\n<pubDate>%ITEM_PUBLISH_DATE%</pubDate>"
|
||||
|
||||
|
||||
class MainObject : public QObject
|
||||
{
|
||||
public:
|
||||
|
@ -41,6 +41,40 @@ bool MainObject::RevertSchema(int cur_schema,int set_schema,QString *err_msg)
|
||||
// NEW SCHEMA REVERSIONS GO HERE...
|
||||
|
||||
|
||||
//
|
||||
// Revert 319
|
||||
//
|
||||
if((cur_schema==319)&&(set_schema<cur_schema)) {
|
||||
sql=QString("select ID,RSS_SCHEMA from FEEDS where RSS_SCHEMA!=0");
|
||||
q=new RDSqlQuery(sql);
|
||||
while(q->next()) {
|
||||
sql=QString("select ")+
|
||||
"HEADER_XML,"+ // 00
|
||||
"CHANNEL_XML,"+ // 01
|
||||
"ITEM_XML "+ // 02
|
||||
"from RSS_SCHEMAS where "+
|
||||
QString().sprintf("ID=%u",q->value(1).toUInt());
|
||||
q1=new RDSqlQuery(sql);
|
||||
if(q1->first()) {
|
||||
QString("update FEEDS set ")+
|
||||
"HEADER_XML=\""+RDEscapeString(q1->value(0).toString())+"\","+
|
||||
"CHANNEL_XML=\""+RDEscapeString(q1->value(1).toString())+"\","+
|
||||
"ITEM_XML=\""+RDEscapeString(q1->value(2).toString())+"\" "+
|
||||
"where "+
|
||||
QString().sprintf("ID=%u",q->value(0).toUInt());
|
||||
if(!RDSqlQuery::apply(sql,err_msg)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
delete q1;
|
||||
}
|
||||
delete q;
|
||||
DropColumn("FEEDS","RSS_SCHEMA");
|
||||
DropTable("RSS_SCHEMAS");
|
||||
|
||||
WriteSchemaVersion(--cur_schema);
|
||||
}
|
||||
|
||||
//
|
||||
// Revert 318
|
||||
//
|
||||
|
@ -160,7 +160,7 @@ void MainObject::InitializeSchemaMap() {
|
||||
global_version_map["3.1"]=310;
|
||||
global_version_map["3.2"]=311;
|
||||
global_version_map["3.3"]=314;
|
||||
global_version_map["3.4"]=318;
|
||||
global_version_map["3.4"]=319;
|
||||
}
|
||||
|
||||
|
||||
|
@ -23,6 +23,7 @@
|
||||
#include <rdcart.h>
|
||||
#include <rddb.h>
|
||||
#include <rdescape_string.h>
|
||||
#include <rdfeed.h>
|
||||
#include <rdpaths.h>
|
||||
|
||||
#include "rddbmgr.h"
|
||||
@ -9965,6 +9966,51 @@ bool MainObject::UpdateSchema(int cur_schema,int set_schema,QString *err_msg)
|
||||
WriteSchemaVersion(++cur_schema);
|
||||
}
|
||||
|
||||
if((cur_schema<319)&&(set_schema>cur_schema)) {
|
||||
sql=QString("create table RSS_SCHEMAS (")+
|
||||
"ID int unsigned primary key,"+
|
||||
"NAME varchar(64) unique not null,"+
|
||||
"HEADER_XML text,"+
|
||||
"CHANNEL_XML text,"+
|
||||
"ITEM_XML text,"+
|
||||
"index NAME_IDX(NAME))";
|
||||
if(!RDSqlQuery::apply(sql,err_msg)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
for(int i=0;i<RDFeed::LastSchema;i++) {
|
||||
RDFeed::RssSchema schema=(RDFeed::RssSchema)i;
|
||||
sql=QString("insert into RSS_SCHEMAS set ")+
|
||||
QString().sprintf("ID=%u,",schema)+
|
||||
"NAME=\""+RDEscapeString(RDFeed::rssSchemaString(schema))+"\"";
|
||||
if(!RDFeed::rssHeaderTemplate(schema).isEmpty()) {
|
||||
sql+=",HEADER_XML=\""+
|
||||
RDEscapeString(RDFeed::rssHeaderTemplate(schema))+
|
||||
"\"";
|
||||
}
|
||||
if(!RDFeed::rssChannelTemplate(schema).isEmpty()) {
|
||||
sql+=",CHANNEL_XML=\""+
|
||||
RDEscapeString(RDFeed::rssChannelTemplate(schema))+"\"";
|
||||
}
|
||||
if(!RDFeed::rssItemTemplate(schema).isEmpty()) {
|
||||
sql+=",ITEM_XML=\""+
|
||||
RDEscapeString(RDFeed::rssItemTemplate(schema))+
|
||||
"\"";
|
||||
}
|
||||
if(!RDSqlQuery::apply(sql,err_msg)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
sql=QString("alter table FEEDS add column ")+
|
||||
"RSS_SCHEMA int unsigned not null default 0 after PURGE_PASSWORD";
|
||||
if(!RDSqlQuery::apply(sql,err_msg)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
WriteSchemaVersion(++cur_schema);
|
||||
}
|
||||
|
||||
|
||||
|
||||
// NEW SCHEMA UPDATES GO HERE...
|
||||
|
Loading…
x
Reference in New Issue
Block a user