00001 <?php
00002
00007 class PriceAlarm_Send extends oxAdminList
00008 {
00014 protected $_iDefEdit = 1;
00022 public function render()
00023 {
00024 $myConfig = $this->getConfig();
00025 $oDB = oxDb::getDb();
00026
00027 parent::render();
00028
00029 ini_set("session.gc_maxlifetime", 36000);
00030
00031 $iStart = oxConfig::getParameter( "iStart");
00032 $iAllCnt = oxConfig::getParameter( "iAllCnt");
00033
00034 $sSelect = "select oxpricealarm.oxid, oxpricealarm.oxemail, oxpricealarm.oxartid, oxpricealarm.oxprice from oxpricealarm, oxarticles where oxarticles.oxid = oxpricealarm.oxartid and oxpricealarm.oxsended = '0000-00-00 00:00:00'";
00035 if (isset($iStart)) {
00036 $rs = $oDB->SelectLimit( $sSelect, $myConfig->getConfigParam( 'iCntofMails' ), $iStart);
00037 } else {
00038 $rs = $oDB->Execute( $sSelect);
00039 }
00040
00041 $iAllCnt_counting=0;
00042
00043 if ($rs != false && $rs->recordCount() > 0) {
00044 while (!$rs->EOF) {
00045 $oArticle = oxNew("oxarticle" );
00046 $oArticle->load($rs->fields['oxid']);
00047 if ($oArticle->getPrice()->getBruttoPrice() <= $rs->fields['oxprice']) {
00048 $this->sendeMail( $rs->fields['oxemail'], $rs->fields['oxartid'], $rs->fields['oxid'], $rs->fields['oxprice']);
00049 $iAllCnt_counting++;
00050 }
00051 $rs->moveNext();
00052 }
00053 }
00054 if ( !isset( $iStart)) {
00055
00056 $iStart = 0;
00057 $iAllCnt = $iAllCnt_counting;
00058 }
00059
00060
00061
00062 $iStart += $myConfig->getConfigParam( 'iCntofMails' );
00063
00064 $this->_aViewData["iStart"] = $iStart;
00065 $this->_aViewData["iAllCnt"] = $iAllCnt;
00066 $this->_aViewData["actlang"] = oxLang::getInstance()->getBaseLanguage();
00067
00068
00069 if ( $iStart < $iAllCnt)
00070 $sPage = "pricealarm_send.tpl";
00071 else
00072 $sPage = "pricealarm_done.tpl";
00073
00074 return $sPage;
00075 }
00076
00082 protected function _setupNavigation( $sId )
00083 {
00084 parent::_setupNavigation( 'pricealarm_list' );
00085 }
00086
00097 public function sendeMail( $sEMail, $sProductID, $sPricealarmID, $sBidPrice)
00098 {
00099 $myConfig = $this->getConfig();
00100 $oPricealarm = oxNew( "oxpricealarm" );
00101 $oPricealarm->load( $sPricealarmID);
00102
00103
00104 $oShop = oxNew( "oxshop" );
00105
00106 $oShop->load( $oPricealarm->oxpricealarm__oxshopid->value);
00107 $oShop = $this->addGlobalParams( $oShop);
00108
00109 $oArticle = oxNew( "oxarticle" );
00110 $oArticle->load( $sProductID);
00111
00112 if ( $oArticle->oxarticles__oxparentid->value && !$oArticle->oxarticles__oxtitle->value) {
00113 $oParent = oxNew( "oxarticle" );
00114 $oParent->load($oArticle->oxarticles__oxparentid->value);
00115 $oArticle->oxarticles__oxtitle->setValue($oParent->oxarticles__oxtitle->value." ".$oArticle->oxarticles__oxvarselect->value);
00116 }
00117
00118 $oDefCurr = $myConfig->getActShopCurrencyObject();
00119
00120 $oAlarm = oxNew( "oxpricealarm" );
00121 $oAlarm->load( $sPricealarmID);
00122
00123 $oThisCurr = $myConfig->getCurrencyObject( $oAlarm->oxpricealarm__oxcurrency->value);
00124
00125 if ( !$oThisCurr ) {
00126 $oThisCurr = $oDefCurr;
00127 $oAlarm->oxpricealarm__oxcurrency->setValue($oDefCurr->name);
00128 }
00129
00130
00131
00132 $oLang = oxLang::getInstance();
00133 $oArticle->oxarticles__oxprice->setValue($oArticle->getPrice()->getBruttoPrice() * $oThisCurr->rate);
00134 $oArticle->fprice = $oLang->formatCurrency( $oArticle->oxarticles__oxprice->value, $oThisCurr);
00135 $oAlarm->fpricealarmprice = $oLang->formatCurrency( $oAlarm->oxpricealarm__oxprice->value, $oThisCurr);
00136
00137 $oxEMail = oxNew( "oxemail" );
00138 $oxEMail->From = $oShop->oxshops__oxorderemail->value;
00139 $oxEMail->FromName = $oShop->oxshops__oxname->getRawValue();
00140 $oxEMail->Host = $oShop->oxshops__oxsmtp->value;
00141 $oxEMail->SetSMTP( $oShop);
00142 $oxEMail->WordWrap = 100;
00143
00144
00145 $smarty = oxUtilsView::getInstance()->getSmarty();
00146 $smarty->assign( "shop", $oShop );
00147 $smarty->assign( "product", $oArticle );
00148 $smarty->assign( "bidprice", $oLang->formatCurrency($sBidPrice, $oThisCurr) );
00149 $smarty->assign( "currency", $oThisCurr );
00150 $smarty->assign( "shopImageDir", $myConfig->getImageUrl( false , false ) );
00151
00152 $iLang = $oAlarm->oxpricealarm__oxlang->value;
00153
00154 if (!$iLang) {
00155 $iLang = 0;
00156 }
00157
00158 $old_iLang = $oLang->getTplLanguage();
00159 $oLang->setTplLanguage( $iLang );
00160
00161 $oxEMail->Body = $smarty->fetch( "email_pricealarm_customer.tpl");
00162 $oxEMail->Subject = $oShop->oxshops__oxname->getRawValue();
00163 $oxEMail->AddAddress( $sEMail, $sEMail );
00164 $oxEMail->AddReplyTo( $oShop->oxshops__oxorderemail->value, $oShop->oxshops__oxname->getRawValue());
00165 $blSuccess = $oxEMail->send();
00166
00167 $oLang->setTplLanguage( $old_iLang );
00168
00169 if ( $blSuccess) {
00170 $oAlarm->oxpricealarm__oxsended->setValue( date( "Y-m-d H:i:s" ) );
00171 $oAlarm->save();
00172 }
00173
00174 }
00175 }