JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
progress on webpacking css
[wfpl-cms.git] / inc / cms.php
1 <?php
2
3 # This function (which loads the navbar and page content from the database) is
4 # called automatically by wfpl_main()
5
6 function enc_css_str($str) {
7     $str = str_replace("\\", "\\00005c", $str);
8     return str_replace("\"", "\\000022", $str);
9 }
10
11 function cms_display($basename, &$tem) {
12     $tem->set('$host', this_host());
13     $nav_items = db_get_assocs('cms_pages', "coalesce(nullif(nav_title,''), title) as title,filename", 'where navbar!=0 order by navbar');
14     if($nav_items) {
15         foreach($nav_items as &$item) {
16             $item['basename'] = $item['filename']; # for nav-links as images
17             if($item['filename'] == $basename) {
18                 $item['current'] = true;
19             }
20             if($item['filename'] == 'index') {
21                 $item['filename'] = './';
22             }
23             if($item['title'] == '') {
24                 $item['title'] = '(untitled)';
25             }
26         }
27         $tem->set('$navbar_items', $nav_items);
28     }
29
30     $header_image = persistent_get('wfplcms_header_image');
31     if ($header_image) {
32         $hi_css  = "\n<style>\n";
33         if ($header_image['width'] != WFPL_SITE_WIDTH) {
34             $hi_css .= ".siteHeader {\n";
35             $hi_css .=   'width: ' . $header_image['width'] . "px;\n";
36             $hi_css .= "}\n";
37         }
38         $hi_css .= ".siteHeader:before {\n";
39         $hi_css .=   "content: \"\";\n";
40         $hi_css .=   "display: block;\n";
41         $hi_css .=   'background-image: url(' . $header_image['url'] . ");\n";
42         $hi_css .=   'padding-top: ' . ($header_image['height'] / $header_image['width'] * 100) . "%;\n";
43         $hi_css .= "}\n";
44         if ($header_image['caption']) {
45             $hi_css .= ".siteHeader:after {\n";
46             $hi_css .=   "content: \"" . enc_css_str($header_image['caption']) . "\";\n";
47             $hi_css .= "}\n";
48         }
49         $hi_css .= "</style>\n";
50
51         $tem->set('$cms_css', $hi_css);
52     }
53
54     $cms_page = db_get_assoc('cms_pages', 'id,title,keywords,description,layout,content,sidebar_content', 'where filename=%"', $basename);
55     cms_display_content($tem, $cms_page);
56
57     $footer = db_get_value('cms_pages', 'content', 'where filename="_footer"');
58     if ($footer) {
59         $tem->set('$cms_footer', $footer);
60     }
61
62     if(session_auth_can('admin_links')) {
63         $admin_links = array();
64         if($cms_page) {
65             $admin_links['$edit_page_id'] = $cms_page['id'];
66         }
67         $tem->set('$admin_links', $admin_links);
68     }
69
70     if($cms_page) {
71         return true;
72     } else {
73         return false;
74     }
75 }
76
77 function cms_display_content(&$tem, $row) {
78     if($row) {
79         $tem->set('$cms_title', $row['title']);
80         $tem->set('$meta_keywords', $row['keywords']);
81         $tem->set('$meta_description', $row['description']);
82         $tem->set('$cms_body', $row['content']);
83         if ($row['layout'] === '' || $row['layout'] === '0') {
84             $tem->set('siteLayoutClass', 'siteLayoutFull');
85         } else {
86             $tem->set('siteLayoutClass', 'siteLayoutSidebar');
87             if ($row['layout'] === '1') {
88                 $tem->set('$layout_sidebar_class', 'plain');
89             } else {
90                 $tem->set('$layout_sidebar_class', 'bordered');
91             }
92             $tem->set('$cms_sidebar', $row['sidebar_content']);
93         }
94         return $row['id'];
95     } else {
96         $tem->set('siteLayoutClass', 'siteLayoutFull');
97     }
98 }