/** * 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; }