✏️ 编辑:InviteForm.class.php
路径:
/virtual/bigbrother/sns/lib/form/InviteForm.class.php
大小:3.98 KB · 修改:2010-08-10 13:59:42 · 权限:0644 · 可写
← 返回目录
👁 查看
⬇ 下载
<?php /** * This file is part of the OpenPNE package. * (c) OpenPNE Project (http://www.openpne.jp/) * * For the full copyright and license information, please view the LICENSE * file and the NOTICE file that were distributed with this source code. */ /** * Invite form. * * @package OpenPNE * @subpackage form * @author Kousuke Ebihara <ebihara@tejimaya.com> */ class InviteForm extends MemberConfigPcAddressForm { public function configure() { $this->setWidget('mail_address', new sfWidgetFormInput()); $this->setValidator('mail_address', new sfValidatorPass()); if ($this->getOption('invited')) { $this->setWidget('message', new sfWidgetFormTextarea()); $this->setValidator('message', new sfValidatorPass()); $this->widgetSchema->setLabel('message', 'Message(Arbitrary)'); } $callback = new sfValidatorCallback(array( 'callback' => array($this, 'validate'), )); $callback->setMessage('invalid', 'invalid e-mail address'); $this->validatorSchema->setPostValidator($callback); } public function validate($validator, $values, $arguments = array()) { if (opToolkit::isMobileEmailAddress($values['mail_address'])) { $mailValidator = new sfValidatorMobileEmail(); $values['mobile_address'] = $mailValidator->clean($values['mail_address']); $mode = 'mobile'; } else { $mailValidator = new opValidatorPCEmail(); $values['pc_address'] = $mailValidator->clean($values['mail_address']); $mode = 'pc'; } if (!opToolkit::isEnabledRegistration($mode)) { throw new sfValidatorError($validator, 'invalid'); } if (!empty($values['mobile_address']) && MemberConfigPeer::retrieveByNameAndValue('mobile_address', $values['mobile_address'])) { throw new sfValidatorError($validator, 'invalid'); } if (!empty($values['pc_address']) && MemberConfigPeer::retrieveByNameAndValue('pc_address', $values['pc_address'])) { throw new sfValidatorError($validator, 'invalid'); } return $values; } public function saveConfig($name, $value) { if ('pc_address' === $name || 'mobile_address' === $name) { $this->savePreConfig($name, $value); $memberConfig = MemberConfigPeer::retrieveByNameAndMemberId($name.'_token', $this->member->getId(), true); $token = $memberConfig->getValue(); $this->sendConfirmMail($token, $value, array( 'id' => $this->member->getId(), 'type' => $name, )); } } protected function sendConfirmMail($token, $to, $params = array()) { $authMode = $this->getOption('authMode', null); if (!$authMode) { $authMode = sfContext::getInstance()->getUser()->getCurrentAuthMode(); } $param = array( 'token' => $token, 'authMode' => $authMode, 'isMobile' => opToolkit::isMobileEmailAddress($to), 'name' => $this->getOption('invited') ? sfContext::getInstance()->getUser()->getMember()->getName() : null, 'message' => $this->getOption('invited') ? $this->getValue('message') : null ); $mail = new sfOpenPNEMailSend(); $mail->setSubject(opConfig::get('sns_name') . '招待状'); $mail->setTemplate('global/requestRegisterURLMail', $param); $mail->send($to, opConfig::get('admin_mail_address')); } public function save() { $user = sfContext::getInstance()->getUser(); $this->member->setInviteMemberId($user->getMemberId()); parent::save(); $this->member->setConfig('register_auth_mode', $this->getOption('authMode', $user->getCurrentAuthMode())); if ($this->getOption('is_link')) { $fromMemberId = $user->getMemberId(); $toMemberId = $this->member->getId(); $relation = MemberRelationshipPeer::retrieveByFromAndTo($fromMemberId, $toMemberId); if (!$relation) { $relation = new MemberRelationship(); $relation->setMemberIdFrom($fromMemberId); $relation->setMemberIdTo($toMemberId); } $relation->setFriend(); } } }
💾 保存
取消
保存为 UTF-8,换行统一为 LF