/** * handle tree edit */ private function handleTreeEditGet($retrieveFields = true) { $template = new TemplateEngine($this->getPath() . "templates/" . $this->templateFile); $request = Request::getInstance(); $view = ViewManager::getInstance(); $view->setType(ViewManager::TREE_EDIT); if (!$request->exists('id')) { throw new Exception('Newsletter is missing.'); } $id = intval($request->getValue('id')); $template->setVariable('id', $id, false); $key = array('id' => $id); if ($retrieveFields) { $fields = $this->getDetail($key); $fields['online'] = $fields['online'] ? strftime('%Y-%m-%d', $fields['online']) : ''; $fields['offline'] = $fields['offline'] ? strftime('%Y-%m-%d', $fields['offline']) : ''; } else { $fields = $this->getFields(SqlParser::MOD_UPDATE); $detail = $this->getDetail($key); $fields['image'] = $detail['image']; } $this->setFields($fields); if ($fields['image']) { $img = new Image($fields['image'], $this->plugin->getContentPath(true)); $fields['image'] = array('src' => $this->plugin->getContentPath(false) . $img->getFileName(false), 'width' => $img->getWidth(), 'height' => $img->getHeight()); } $template->setVariable($fields); // get theme list $themeManager = new ThemeManager(); $searchcriteria = array('active' => true); $themelist = $themeManager->getList($searchcriteria); $template->setVariable('cbo_theme', Utils::getHtmlCombo($themelist['data'], $fields['theme_id'])); $this->handleTreeSettings($template); $datefields = array(); $datefields[] = array('dateField' => 'online', 'triggerElement' => 'online'); $datefields[] = array('dateField' => 'offline', 'triggerElement' => 'offline'); Utils::getDatePicker($this->director->theme, $datefields); // get crop settings $settings = $this->plugin->getSettings(); //only crop if both width and height defaults are set if ($fields['image'] && $settings['image_width'] && $settings['image_height'] && ($fields['image']['width'] > $settings['image_width'] || $fields['image']['height'] > $settings['image_height'])) { $theme = $this->director->theme; $parseFile = new ParseFile(); $parseFile->setVariable($fields); $parseFile->setVariable('imgTag', 'imgsrc'); $parseFile->setVariable($settings); $parseFile->setSource($this->plugin->getHtdocsPath(true) . "js/cropinit.js.in"); //$parseFile->setDestination($this->plugin->getCachePath(true)."cropinit_tpl_content.js"); //$parseFile->save(); $theme->addJavascript($parseFile->fetch()); $theme->addHeader('<script type="text/javascript" src="' . DIF_VIRTUAL_WEB_ROOT . 'js/prototype.js"></script>'); $theme->addHeader('<script type="text/javascript" src="' . DIF_VIRTUAL_WEB_ROOT . 'js/scriptaculous.js"></script>'); $theme->addHeader('<script type="text/javascript" src="' . DIF_VIRTUAL_WEB_ROOT . 'js/cropper.js"></script>'); $theme->addHeader('<script type="text/javascript" src="' . DIF_VIRTUAL_WEB_ROOT . 'js/mint.js"></script>'); } $this->template[$this->director->theme->getConfig()->main_tag] = $template; }
/** * handle overview request */ private function handleOverviewPost() { $request = Request::getInstance(); $view = ViewManager::getInstance(); // retrieve tags that are linked to this plugin if (!$request->exists('tag')) { throw new Exception('Tag not defined'); } $tag = $request->getValue('tag'); $tree_id = $this->director->tree->getCurrentId(); // get objects $objSettings = $this->plugin->getObject(NewsLetter::TYPE_SETTINGS); $objUser = $this->plugin->getObject(NewsLetter::TYPE_USER); $objGroup = $this->plugin->getObject(NewsLetter::TYPE_GROUP); // get settings $globalSettings = $this->plugin->getSettings(); $settings = array_merge($globalSettings, $objSettings->getSettings($tree_id, $tag)); //$mailfrom = $settings['mailfrom']; try { $values = $request->getRequest(Request::POST); $values['tree_id'] = $tree_id; $values['tag'] = $tag; $ip = $request->getValue('REMOTE_ADDR', Request::SERVER); $values['active'] = true; $values['ip'] = $ip; $values['host'] = gethostbyaddr($ip); $values['client'] = $request->getValue('HTTP_USER_AGENT', Request::SERVER); $values['optin'] = $settings['action'] == NewsLetterSettings::ACTION_OPTIN ? md5(session_id() . time()) : ''; $group = is_array($request->getValue('group')) ? array_keys($request->getValue('group')) : array(); $id = $objUser->insert($values); foreach ($group as $item) { $objUser->addGroup($id, array('id' => $item)); } $settings['optin_key'] = $values['optin']; if ($settings['action']) { $info = array_merge($settings, $values); //add intro / activation text to email $tplContent = $this->composeText($info); $this->sendMail($values['email'], $this->director->getConfig()->email_address, $settings['subject'], $tplContent->fetch(), false); } $location = $settings['ref_tree_id'] ? $this->director->tree->getPath($settings['ref_tree_id']) : '/'; header("Location: {$location}"); exit; } catch (Exception $e) { $template = new TemplateEngine(); $template->setVariable('newsLetterErrorMessage', $e->getMessage(), false); $this->handleOverviewGet(); } }