public function init() { if (isset($this->advertisement)) { $user = Advertisement::getUser($this->advertisement->id); $element = new Zend_Form_Element_Hidden('id'); $element->setValue($this->advertisement->id); $this->addElement($element); $element = new Zend_Form_Element_Hidden('password'); $element->setValue($this->password); $this->addElement($element); $this->setAction('/' . strtolower($this->city->name) . '/bulletin/update'); } else { $this->setAction('/' . strtolower($this->city->name) . '/bulletin/create'); } $element = new Zend_Form_Element_Hidden('city'); $element->setValue($this->city->id); $this->addElement($element); $this->setMethod('POST'); $this->setName('createAdForm'); $element = new Zend_Form_Element_Text('name'); $element->setLabel('怎么称呼您'); $element->setDescription('必填,中英文都可,2到30个字'); $element->setRequired(true); //$element->addValidator(new Zend_Validate_StringLength(2,30)); if (isset($user)) { $element->setValue($user->name); } $this->addElement($element); $element = new Zend_Form_Element_Text('email'); $element->setLabel('您的Email'); $element->setRequired(true); $element->addValidator(new Zend_Validate_EmailAddress()); $element->addValidator('NotEmpty'); $element->setDescription('必填,将不会显示在您的帖子里'); if (isset($user)) { $element->setValue($user->email); } $this->addElement($element); $element = new Zend_Form_Element_Text('mobile'); $element->setLabel('您的手机号'); $element->addFilter(new Zend_Filter_HtmlEntities()); $element->addFilter(new Zend_Filter_StripTags()); $element->setDescription('方便其他用户联系您'); if (isset($user)) { $element->setValue($user->mobile); } $this->addElement($element); $this->addDisplayGroup(array('name', 'email', 'mobile'), 'aboutYou'); $this->getDisplayGroup('aboutYou')->removeDecorator('DtDdWrapper'); // radio box $element = new Zend_Form_Element_Radio('type'); $element->addMultiOptions(array('lease' => '供', 'want' => '求'))->removeDecorator('Label'); $element->setSeparator('')->setValue(Advertisement::LEASE); if (isset($this->advertisement)) { $element->setValue($this->advertisement->type); } $this->addElement($element); // category $element = new Zend_Form_Element_Checkbox("isBusiness"); $element->setLabel('是商铺/店面吗?'); if (isset($this->advertisement) && $this->advertisement->category_id == Category::SHOP) { $element->setValue(1); } else { $element->setValue(0); } $this->addElement($element); $element = new Zend_Form_Element_Text('title'); $element->setLabel('帖子标题'); $element->setRequired(true); $element->addValidator('NotEmpty'); //$element->addValidator(new Zend_Validate_StringLength(10,30)); $element->setDescription('必填,5-100字,概括题目,突出重点'); if (isset($this->advertisement)) { $element->setValue($this->advertisement->title); } $this->addElement($element); $element = new Zend_Form_Element_Text('address'); $element->setLabel('房子的住址'); $element->setDescription('必填,以便用户在地图上方便的找到'); if (isset($this->advertisement)) { $element->setValue($this->advertisement->address); } $this->addElement($element); $element = new Zend_Form_Element_Text('rent'); $element->setLabel('租金'); if (isset($this->advertisement)) { $element->setValue($this->advertisement->rent); } $this->addElement($element); $element = new Zend_Form_Element_Select('currency'); //$element->setLabel("货币"); $element->addMultiOptions(Currency::getAvailableCurrencyAsArray()); if (isset($this->advertisement)) { $element->setValue(Advertisement::getCurrency($this->advertisement)->id); } else { $element->setValue(127); } $this->addElement($element); $element = new Zend_Form_Element_Radio('rent_measurement'); $element->addMultiOptions(array('month' => '每月', 'day' => '每日'))->setSeparator('')->setDescription('必填')->removeDecorator('Label'); $element->setSeparator('')->setValue(Advertisement::RENT_MONTHLY); if (isset($this->advertisement)) { if ($this->advertisement->rent_measurement == Advertisement::RENT_MONTHLY) { $element->setValue('month'); } else { if ($this->advertisement->rent_measurement == Advertisement::RENT_DAILY) { $element->setValue('day'); } } } $element->setRequired(true); $element->addValidator('NotEmpty'); $element->addValidator(new Zend_Validate_Alnum()); $this->addElement($element); // start date and stop date $element = new Zend_Form_Element_Text('start_date'); $element->setRequired(true); $element->addValidator('NotEmpty'); $element->setLabel('开始日期'); $element->setDescription('必填,格式为2010-09-11'); if (isset($this->advertisement)) { $element->setValue($this->advertisement->start_date); } $this->addElement($element); $element = new Zend_Form_Element_Text('stop_date'); $element->setLabel('结束日期'); $element->setDescription('同上,留空则为长期'); if (isset($this->advertisement)) { $element->setValue($this->advertisement->stop_date); } $this->addElement($element); $element = new Zend_Form_Element_Text('area'); $element->setLabel('面积(平方米)'); $element->addValidator(new Zend_Validate_Alnum()); if (isset($this->advertisement)) { $element->setValue($this->advertisement->area); } $this->addElement($element); $element = new Zend_Form_Element_Text('num_of_room'); $element->setLabel('房间数'); $element->addValidator(new Zend_Validate_Alnum()); $element->setDescription('卧房数'); if (isset($this->advertisement)) { $element->setValue($this->advertisement->num_of_room); } $this->addElement($element); $element = new Zend_Form_Element_Textarea('description'); $element->setLabel('其他描述'); $element->setDescription('更多详细信息,例如: 交通是否方便? 是否有独立卫生间和厨房? 是否仅限女生? 是否有家具? 月租是否包括网费? 您的个人习惯等等。'); $element->setAttrib('rows', 4); if (isset($this->advertisement)) { $element->setValue($this->advertisement->description); } $this->addElement($element); $element = new Elements(); $element->addReCaptcha($this); $element = new Zend_Form_Element_Submit('post'); $element->setValue('提交')->removeDecorator('Label'); $this->addElement($element); $this->addDisplayGroup(array('isBusiness', 'type', 'title', 'address', 'rent', 'currency', 'rent_measurement', 'start_date', 'stop_date', 'area', 'num_of_room', 'description', 'challenge', 'post'), 'aboutRoom'); $this->getDisplayGroup('aboutRoom')->removeDecorator('DtDdWrapper'); }
/** * Populate notification list. * * Example: ctl 1686825444, crc e233847ad0507ae1d0890633ced692b9 */ public function populatenoficationlistAction() { $this->_helper->viewRenderer->setNoRender(); //view info disabled $this->_helper->layout->disableLayout(); $ctl = $this->_getParam('ctl'); $crc = $this->_getParam('crc'); $customerKey = ''; $startDate = $this->_getParam('start'); $generated_crc = md5($ctl); if ($generated_crc == $crc) { $notifiedBeforeDate = $this->_helper->generator->manipulatDate($this->_helper->generator->generateCurrentTime(), -Constant::NOTIFICATION_DAY, Zend_Date::DAY); $advertisements = $this->advertisement->findAdvertisementToSendNofication($notifiedBeforeDate); $numOfAdvs = count($advertisements); echo "Check advertisments created before " . $notifiedBeforeDate . "<br/>"; echo $numOfAdvs . " advertisements found might need to be notified<br/>"; $numOfAffected = 0; foreach ($advertisements as $advertisement) { $data = array("advertisement_id" => $advertisement->id, "type" => "close_advertisement", "status" => "valid", "created" => $this->_helper->generator->generateCurrentTime()); $db = Zend_Registry::get("db"); $db->beginTransaction(); // check if notification to be added is already exist. // only add to mail queue if it's a new one. $notification = $this->advertisementNotification->findByAdvertisementTypeAndStatus($advertisement->id, "close_advertisement", "valid"); if (empty($notification)) { $this->advertisementNotification->addOneEntry($data); $subject = MailTemplate::SUBJECT_CLOSE_NOTICATION; $user = Advertisement::getUser($advertisement->id); $pos = strpos($user->email, "@zugefangzi.com"); if ($pos == false) { $sender = Constant::SYSTEM_MAIL; } else { $sender = Constant::EMAIL_TO_SERVER; } $recipient = $user->email; $message = MailTemplate::getNotificationEmailMessage($advertisement, $recipient, MailTemplate::CLOSE_NOTIFICATION_BODY, Constant::CLOSE_NOTIFICATION); $this->mailQueue->addToQueue(MailType::CLOSE_NOTIFICATION, null, $subject, $sender, $recipient, $message, $this->_helper->generator->generateCurrentTime()); $numOfAffected++; } $db->commit(); } echo $numOfAffected . " advertisement(s) are affected"; echo "<hr/>"; // close down expired advertisements $advertisements = $this->advertisement->findAdvertisementToClose(); $numOfAdvs = count($advertisements); echo "Close expired advertisements<br/>"; echo $numOfAdvs . " advertisements found<br/>"; $numOfAffected = 0; $db = Zend_Registry::get("db"); $db->beginTransaction(); foreach ($advertisements as $advertisement) { $advertisement->status = PostStatus::CLOSED; $advertisement->save(); $subject = MailTemplate::SUBJECT_CLOSED_POST; $user = Advertisement::getUser($advertisement->id); $pos = strpos($user->email, "@zugefangzi.com"); if ($pos == false) { $sender = Constant::SYSTEM_MAIL; } else { $sender = Constant::EMAIL_TO_SERVER; } $recipient = $user->email; $message = MailTemplate::getNotificationEmailMessage($advertisement, $recipient, MailTemplate::CLOED_POST_BODY, Constant::CLOSE_NOTIFICATION); $this->mailQueue->addToQueue(MailType::SYSINFO, null, $subject, $sender, $recipient, $message, $this->_helper->generator->generateCurrentTime()); $numOfAffected++; } $db->commit(); echo $numOfAffected . " advertisement(s) are affected"; } else { throw new Exception('Not allowed to run the service!'); } }
/** * View detail post action. */ public function viewAction() { $config = Zend_Registry::get('config'); $this->view->headScript()->appendFile($config->baseurl . '/js/jquery.validate.min.js'); $this->view->headScript()->appendFile($config->baseurl . '/js/view.js'); $this->view->class = "view"; $city = $this->_getParam('city'); $id = $this->_getParam('id'); $advertisement = $this->advertisement->findById($id); if (isset($advertisement)) { $this->view->viewMode = 'detail'; $this->view->advertisement = $advertisement; $form = new SendIntrestMail($advertisement, $city); $this->view->form = $form; $cityObj = $this->city->findByName($city); $this->view->pageTitle = $advertisement->title . "| 租个房子 - " . $cityObj->name_cn_long; $pageDesc = ""; if ($advertisement->type == "want") { $this->view->pageImage = "want"; $pageDesc = $pageDesc . "最高房租:" . $advertisement->rent . $this->_helper->RentFormat($advertisement) . " | "; $pageDesc = $pageDesc . "最小面积:" . $advertisement->area . "平方米 | "; $pageDesc = $pageDesc . "时间:" . $advertisement->start_date; if ($this->_helper->DateIsValid($advertisement->stop_date)) { $pageDesc = $pageDesc . "到" . $advertisement->stop_date; } else { $pageDesc = $pageDesc . "起长期"; } $pageDesc = $pageDesc . "\n描述:" . $advertisement->description; } else { $this->view->pageImage = "lease"; $pageDesc = $pageDesc . "地址:" . $advertisement->address . " | "; $pageDesc = $pageDesc . "房租: " . $advertisement->rent . $this->_helper->RentFormat($advertisement) . " | "; $pageDesc = $pageDesc . "时间:" . $advertisement->start_date; if ($this->_helper->DateIsValid($advertisement->stop_date)) { $pageDesc = $pageDesc . "到" . $advertisement->stop_date; } else { $pageDesc = $pageDesc . "起长期"; } $pageDesc = $pageDesc . "\n描述:" . $advertisement->description; } if ($advertisement->category_id == Category::SHOP) { $this->view->pageImage = "business"; } $this->view->pageDesc = $pageDesc; if ($this->getRequest()->isPost()) { if ($form->isValid($_POST)) { // $isValid = $this->_helper->common->validReCaptcha ($this->_getAllParams()); // if ($isValid) { $id = $form->getValue('id'); $city = $form->getValue('city'); // sender name $name = $form->getValue('name'); // sender email $email = $form->getValue('email'); // body $body = $form->getValue('body'); $advertisement = $this->advertisement->findById($id); $user = Advertisement::getUser($id); //$this->_helper->swiftEmail->sendEmail($body, Advertisement::getUser($advertisement->id)->email, $email, '租个房子'); $db = Zend_Registry::get('db'); $db->beginTransaction(); $data = array('name' => trim($name), 'email' => trim($email)); $sendUser = $this->user->addUser($data); $message = MailTemplate::getEmailMessage($name, $email, $user->email, $body, $advertisement, MailTemplate::SENDER_MAIL_BODY); $subject = MailTemplate::getEmailSubject($advertisement->title, MailTemplate::SUBJECT_SEND_TO_OWNER); $mailId = $this->mailQueue->addToQueue(MailType::USER, $name, $subject, $email, $user->email, $message, $this->_helper->generator->generateCurrentTime()); // add advertisement response $this->advertisementResponse->addAdvertisementResponse($id, $sendUser->id, $mailId); $message = MailTemplate::getEmailMessage($name, $email, $user->email, $body, $advertisement, MailTemplate::SENDER_RECIEPT_BODY); $subject = MailTemplate::getEmailSubject($advertisement->title, MailTemplate::SUBJECT_SENDER_RECEIPT); $this->mailQueue->addToQueue(MailType::USER, $name, $subject, Constant::SYSTEM_MAIL, $email, $message, $this->_helper->generator->generateCurrentTime()); $this->_flashMessenger->addMessage("您的邮件已成功发给贴主了!请等待回音!因为房源紧张,所以可能不会收到贴主的回复。请多找几处。最好电话联系!谢谢您的支持!!"); $db->commit(); $this->_redirect('/' . $city . '/bulletin/view/' . $advertisement->id); // } else { //// throw new Exception ( '验证码错误!' ); // } } } } else { throw new Exception('帖子ID缺失或者帖子未找到!'); } }