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缺失或者帖子未找到!');
     }
 }