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