Example #1
0
 /**
  * handle optin confirm
  */
 private function handleOptin()
 {
     $taglist = $this->plugin->getTagList();
     if (!$taglist) {
         return;
     }
     $request = Request::getInstance();
     $view = ViewManager::getInstance();
     $recordElement = $this->plugin->getObject(Form::TYPE_ELEMENT);
     $record = $this->plugin->getObject(Form::TYPE_RECORD);
     $recordItem = $this->plugin->getObject(Form::TYPE_RECORD_ITEM);
     if (!$request->exists('key')) {
         throw new Exception('Parameter does not exist.');
     }
     $keyValue = $request->getValue('key');
     if (!$keyValue) {
         throw new Exception('Parameter is empty.');
     }
     // get request
     $key = array('optin' => $keyValue);
     $recordDetail = $record->getDetail($key);
     $itemSearch = array('rcd_id' => $recordDetail['id']);
     $recordItemList = $recordItem->getList($itemSearch);
     foreach ($recordItemList['data'] as $item) {
         if ($item['classname'] == 'InputEmailSender') {
             $mailfrom = $item['value'];
             break;
         }
     }
     // enable request
     $success = $record->enable($key);
     // retrieve settings to get redirect location
     $settings = $this->plugin->getSettings($recordDetail['tree_id'], $recordDetail['tag']);
     // send email
     if ($success) {
         if (!$mailfrom) {
             $mailfrom = $settings['mailto'];
         }
         $tplContent = $this->composeMail($settings, $recordItemList['data']);
         $this->sendMail($settings['mailto'], $mailfrom, $settings['subject'], $tplContent->fetch());
     }
     $location = $settings['optin_tree_id'] ? $this->director->tree->getPath($settings['optin_tree_id']) : '/';
     header("Location: {$location}");
     exit;
 }