Example #1
0
 public function handlePostProcessing($theme)
 {
     // process user defined templates and their stylesheets
     $template = $theme->getTemplate();
     $siteTag = new SystemSiteTag();
     $search = array('tree_id' => $this->tree->getCurrentId());
     $list = $siteTag->getList($search);
     foreach ($list['data'] as $item) {
         $theme->replaceTag($item['parent_tag'], $item['child_tags'], $item['template'], $item['remove_container']);
         // skip the rest if no stylesheet is set
         if (!$item['stylesheet']) {
             continue;
         }
         // parse stylesheet to set variables
         $theme->addStylesheet($theme->fetchFile($item['stylesheet']));
         // save stylesheet to a file and then inlcude it in the theme headers
         /*$filename = strtolower($siteTag->getClassname()."_{$item['tree_id']}_{$item['parent_tag']}.css");
         		$stylesheet = $theme->createFile($filename, $item['stylesheet']);
         		$theme->addHeader('<link href="'.$stylesheet.'" rel="stylesheet" type="text/css" media="screen" />');*/
     }
 }
Example #2
0
 /**
  * Returns protected var $oberserver.
  * @param string observer key
  * @return array
  */
 public function getTagList($param)
 {
     $id = $param['id'];
     $tree_id = $param['tree_id'];
     $url_edit = new Url();
     $url_del = new Url();
     $url_edit->fromString($param['href_edit_theme_tag']);
     $url_del->fromString($param['href_del_theme_tag']);
     try {
         $siteTag = new SystemSiteTag();
         $theme = $this->director->themeManager->getThemeFromId(array('id' => $id));
         $usedTags = $siteTag->getTagList(array('tree_id' => $tree_id));
         $taglist = $theme->getTagList();
         foreach ($taglist as &$item) {
             $item['userdefined'] = array_key_exists($item['id'], $usedTags) ? join(', ', $usedTags[$item['id']]) : '';
             $url_edit->setParameter('parent_tag', $item['id']);
             $url_del->setParameter('parent_tag', $item['id']);
             $item['href_edit'] = $url_edit->getUrl();
             $item['href_del'] = $item['userdefined'] ? $url_del->getUrl() : '';
         }
         return array_values($taglist);
     } catch (Exception $e) {
         return $e->getMessage();
     }
 }
Example #3
0
 /**
  * handle pre update checks and additions 
  * eg. check for uniqueness of set default values
  *
  * @param array filtered values for insertion
  * @param array filtered values for insertion
  * @return void
  * @see DbConnector::handlePreInsert
  */
 protected function handlePreUpdate($id, $values)
 {
     if ($values['tree_root_id'] > 0) {
         throw new Exception("Root node must be smaller than 1");
     }
     $sqlParser = clone $this->sqlParser;
     $sqlParser->addCriteria(new SqlCriteria('grp_name', $values['name']));
     $sqlParser->addCriteria(new SqlCriteria('grp_language', $values['language']));
     $sqlParser->addCriteria(new SqlCriteria('grp_id', $id['id'], '<>'));
     $query = $sqlParser->getSql(SqlParser::PKEY);
     $db = $this->getDb();
     $res = $db->query($query);
     if ($db->isError($res)) {
         throw new Exception($res->getDebugInfo());
     }
     if ($res->numRows() > 0) {
         throw new Exception('Website already exists.');
     }
     // only 1 default selected theme can exist
     if (array_key_exists('startpage', $values) && $values['startpage']) {
         $this->deselect();
     }
     // rearrange tree
     $current = $this->getDetail($id);
     if ($current['tree_root_id'] != $values['tree_root_id']) {
         // check if current id is shared with others. if so, skip theme, tag and plugin move
         $sqlParser = clone $this->sqlParser;
         $sqlParser->addCriteria(new SqlCriteria('grp_tree_root_id', $current['tree_root_id']));
         $sqlParser->addCriteria(new SqlCriteria('grp_id', $id['id'], '<>'));
         $query = $sqlParser->getSql(SqlParser::PKEY);
         $res = $db->query($query);
         if ($db->isError($res)) {
             throw new Exception($res->getDebugInfo());
         }
         if ($res->numRows() < 1) {
             // move theme to new parent
             $siteTheme = new SystemSiteTheme();
             $siteTheme->changeNode($current['tree_root_id'], $values['tree_root_id']);
             // move tag to new parent
             $siteTag = new SystemSiteTag();
             $siteTag->changeNode($current['tree_root_id'], $values['tree_root_id']);
             // move plugins to new parent
             $sitePlugin = $this->director->siteManager->systemSite->getSitePlugin();
             $sitePlugin->changeNode($current['tree_root_id'], $values['tree_root_id']);
             // move acl to new parent
             $acl = new Acl();
             $acl->changeNode($current['tree_root_id'], $values['tree_root_id']);
         }
         // move child nodes
         $site = new SystemSite();
         $site->moveToNode($current['tree_root_id'], $id['id'], $values['tree_root_id']);
         // clear cache
         $cache = Cache::getInstance();
         $cache->clear();
     }
 }