Ejemplo n.º 1
0
 /**
  * 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;
 }
Ejemplo n.º 2
0
 /**
  * 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();
     }
 }