00001 <?php
00002
00008 class Newsletter_Send extends oxAdminList
00009 {
00017 public function render()
00018 {
00019 $myConfig = $this->getConfig();
00020 parent::render();
00021
00022 $iStart = oxConfig::getParameter( "iStart");
00023 $iUser = oxConfig::getParameter( "user");
00024 $sID = oxConfig::getParameter( "id");
00025
00026 $oNewsletter = oxNew( "oxNewsLetter" );
00027 $oNewsletter->load( $sID );
00028 $oNewsletterGroups = $oNewsletter->getGroups();
00029
00030
00031 $oCachedNewsletter = oxSession::getVar("_oNewsletter");
00032 if ( isset($oCachedNewsletter)) {
00033
00034 if ($oCachedNewsletter->sID != $sID)
00035 oxSession::deleteVar("_oNewsletter");
00036 else {
00037
00038 $iStart = $oCachedNewsletter->iStart;
00039 $iUser = $oCachedNewsletter->iUser;
00040 $sID = $oCachedNewsletter->sID;
00041 }
00042 } else {
00043
00044 $oCachedNewsletter->iStart = $iStart;
00045 $oCachedNewsletter->iUser = $iUser;
00046 $oCachedNewsletter->sID = $sID;
00047 }
00048
00049
00050 $oDB = oxDb::getDb();
00051 $sSelectGroups = " ( oxobject2group.oxgroupsid in ( ";
00052 $blSep = false;
00053 foreach ( $oNewsletterGroups as $sInGroup) {
00054 $sSearchKey = $sInGroup->oxgroups__oxid->value;
00055 if ( $blSep)
00056 $sSelectGroups .= ",";
00057 $sSelectGroups .= "'$sSearchKey'";
00058 $blSep = true;
00059 }
00060 $sSelectGroups .= ") )";
00061
00062 if ( !$blSep)
00063 $sSelectGroups = " oxobject2group.oxobjectid is null ";
00064
00065 $sSelect = "select oxnewssubscribed.oxuserid, oxnewssubscribed.oxemail, oxnewssubscribed.oxsal, oxnewssubscribed.oxfname, oxnewssubscribed.oxlname from oxnewssubscribed left join oxobject2group on oxobject2group.oxobjectid = oxnewssubscribed.oxuserid where ( oxobject2group.oxshopid = '".$myConfig->getShopID()."' or oxobject2group.oxshopid is null ) and $sSelectGroups and oxnewssubscribed.oxdboptin = 1 and (not (oxnewssubscribed.oxemailfailed = '1')) and (not(oxnewssubscribed.oxemailfailed = \"1\")) group by oxnewssubscribed.oxemail";
00066
00067 $rs = $oDB->selectLimit( $sSelect, $myConfig->getConfigParam( 'iCntofMails' ), $iStart);
00068
00069 ini_set("session.gc_maxlifetime", 36000);
00070
00071 if ($rs != false && $rs->recordCount() > 0) {
00072 while (!$rs->EOF) {
00073 $sUserID = $rs->fields[0];
00074
00075
00076 if( !$oDB->getOne("select oxid from oxuser where oxid = '$sUserID'"))
00077 $sUserID = null;
00078
00079
00080 if ( !isset( $sUserID) || !$sUserID) {
00081
00082 $oUser = oxNew( "oxuser" );
00083 $oUser->oxuser__oxusername = new oxField($rs->fields[1]);
00084 $oUser->oxuser__oxsal = new oxField($rs->fields[2]);
00085 $oUser->oxuser__oxfname = new oxField($rs->fields[3]);
00086 $oUser->oxuser__oxlname = new oxField($rs->fields[4]);
00087 $oNewsletter->prepare( $oUser, $myConfig->getConfigParam( 'bl_perfLoadAktion' ) );
00088 }
00089 else
00090 $oNewsletter->prepare( $sUserID, $myConfig->getConfigParam( 'bl_perfLoadAktion' ) );
00091
00092 if ( $oNewsletter->send() ) {
00093
00094 $oRemark = oxNew( "oxremark" );
00095 $oRemark->oxremark__oxtext = new oxField($oNewsletter->sPlainText);
00096 $oRemark->oxremark__oxparentid = new oxField($sUserID);
00097 $sShopID = oxSession::getVar( "actshop");
00098 $sShopID = oxSession::setVar( "keepalive", "yes");
00099 $oRemark->oxremark__oxshopid = new oxField($sShopID);
00100 $oRemark->save();
00101 } else
00102 echo( "problem sending to : ".$rs->fields[1]."<br>");
00103
00104
00105 $rs->moveNext();
00106 }
00107 }
00108
00109
00110 $iStart += $myConfig->getConfigParam( 'iCntofMails' );
00111
00112
00113 $oCachedNewsletter->iStart = $iStart;
00114 $oCachedNewsletter->iUser = $iUser;
00115 $oCachedNewsletter->sID = $sID;
00116
00117 $this->_aViewData["iStart"] = $iStart;
00118 $this->_aViewData["user"] = $iUser;
00119 $this->_aViewData["id"] = $sID;
00120
00121
00122
00123 if ( $iStart < $iUser) {
00124 $sPage = "newsletter_send.tpl";
00125
00126 oxSession::setVar("_oNewsletter", $oCachedNewsletter);
00127 } else {
00128 $sPage = "newsletter_done.tpl";
00129
00130 oxSession::deleteVar("_oNewsletter");
00131 }
00132
00133 return $sPage;
00134 }
00135
00136
00137
00138
00139
00140
00141 protected function _setupNavigation( $sId )
00142 {
00143 parent::_setupNavigation( 'newsletter_list' );
00144 }
00145 }