00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #include "connectstring"
00011 #include "forms.h"
00012 #include "ocTypes.h"
00013 #include "ocString.h"
00014 #include "read_write_base.hpp"
00015
00016
00017 using namespace std;
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 class paragraph: public read_write_base
00034 {
00035 public:
00036 identifier id;
00037 long long site_id;
00038 long long page_id;
00039 int place_order;
00040 string template_tag;
00041 string replace_tag;
00042 string name;
00043 string content;
00044
00045
00046 ocString section;
00047
00048 paragraph()
00049 :read_write_base(),id(0LL),site_id(0LL)
00050 ,page_id(0LL),place_order(0),replace_tag("$content")
00051 {
00052
00053 data_name("metasite.paragraphs");
00054
00055
00056 addDXMap( new llongXfer("id", &id ));
00057 addDXMap( new llongXfer("site_id", &site_id ));
00058 addDXMap( new llongXfer("page_id", &page_id ));
00059 addDXMap( new intXfer("place_order", &place_order ));
00060 addDXMap( new stringXfer("template_tag", &template_tag ));
00061 addDXMap( new stringXfer("replace_tag", &replace_tag ));
00062 addDXMap( new stringXfer("name", &name ));
00063 addDXMap( new stringXfer("content", &content ));
00064 }
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079 virtual bool ivalidate( void )
00080 {
00081 bool bres=true;
00082 if( site_id == 0 )
00083 {
00084 bres=false;
00085 m_result="No Site Specified!";
00086 }
00087 else if ( page_id == 0 )
00088 {
00089 bres=false;
00090 m_result="No Page Specified!";
00091 }
00092 else if( template_tag.length() == 0 )
00093 {
00094 bres=false;
00095 m_result="No Template Text Specified!";
00096 }
00097 else if( replace_tag.length() == 0 )
00098 {
00099 bres=false;
00100 m_result="No Replacement Tag!";
00101 }
00102 else if( name.length() == 0 )
00103 {
00104
00105 name="Section Name Here";
00106 }
00107 else
00108 {
00109
00110 if( place_order == 0 )
00111 {
00112 ocString msql = "select max(place_order) from paragraphs "
00113 "where page_id = ";
00114 msql.append( page_id );
00115 if( section.length() )
00116 {
00117 msql += " and template_tag in ('" +
00118 section.replaceAll(",","','") + "')";
00119 }
00120 if(rs.open(msql))
00121 {
00122 place_order = atol(rs.getField(0).format().c_str()) + 1;
00123 rs.close();
00124 }
00125 }
00126 }
00127 return bres;
00128 }
00129 virtual bool ssupplemental( void )
00130 {
00131 return true;
00132 }
00133 virtual bool uvalidate( changeMap & changes )
00134 {
00135 return true;
00136 }
00137 virtual bool usupplemental( changeMap & changes )
00138 {
00139
00140 if( changes.find("place_order") != changes.end() )
00141 {
00142 ocString msql = "select id from paragraphs "
00143 "where page_id = ";
00144 msql.append( page_id );
00145 msql += " and place_order = ";
00146 msql.append( place_order );
00147 msql += " and id <> ";
00148 msql.append( id );
00149 if( section.length() )
00150 {
00151 msql += " and template_tag in ('" +
00152 section.replaceAll(",","','") + "')";
00153 }
00154 if(rs.open(msql))
00155 {
00156 rs.close();
00157
00158 msql = "update paragraphs set place_order=place_order+1 where page_id = ";
00159 msql.append( page_id );
00160 msql += " and place_order >= ";
00161 msql.append( place_order );
00162 msql += " and id <> ";
00163 msql.append( id );
00164 if( section.length() )
00165 {
00166 msql += " and template_tag in ('" +
00167 section.replaceAll(",","','") + "')";
00168 }
00169 cmd.execute(msql);
00170
00171 }
00172 }
00173 return true;
00174 }
00175 };