JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
header from cms image named "Header"
[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 function cms_display($basename, &$tem) {
6         if(preg_match('/([.]l(ocal)?$)|^192[.]168[.]|^127.0.0.1$|^10[.]/', $_SERVER['HTTP_HOST'])) {
7                 $GLOBALS['wfpl_main_template']->set('$running_locally');
8         }
9         $tem->set('$host', this_host());
10         $nav_items = db_get_assocs('cms_pages', "coalesce(nullif(nav_title,''), title) as title,filename", 'where navbar!=0 order by navbar');
11         if($nav_items) {
12                 foreach($nav_items as &$item) {
13                         $item['basename'] = $item['filename']; # for nav-links as images
14                         if($item['filename'] == $basename) {
15                                 $item['current'] = true;
16                         }
17                         if($item['filename'] == 'index') {
18                                 $item['filename'] = './';
19                         }
20                         if($item['title'] == '') {
21                                 $item['title'] = '(untitled)';
22                         }
23                 }
24                 $tem->set('$navbar_items', $nav_items);
25         }
26
27         $cms_page_id = cms_display_content($tem, 'where filename=%"', $basename);
28
29         $footer = db_get_value('cms_pages', 'content', 'where filename="_footer"');
30         if ($footer) {
31                 $tem->set('$cms_footer', $footer);
32         }
33
34         $header = db_get_value('cms_images', 'image', 'where name="Header"');
35         if ($header) {
36                 $parts = explode(' ', $header . '      ', 7);
37                 $tem->set('$cms_header',
38                         '<div style="'
39                         . 'padding-top: ' . round(100000 * (int)$parts[2] / (int)$parts[1] / 1000) . '%;'
40                         . 'background-image: url(' . $parts[0] . ');'
41                         . 'background-repeat: no-repeat;'
42                         . 'background-size: 100% auto;'
43                         . '"></div>'
44                 );
45         }
46
47         if(session_auth_can('admin_links')) {
48                 $admin_links = array();
49                 if($cms_page_id) {
50                         $admin_links['$edit_page_id'] = $cms_page_id;
51                 }
52                 $tem->set('$admin_links', $admin_links);
53         }
54
55         if($cms_page_id) {
56                 return true;
57         } else {
58                 return false;
59         }
60 }
61
62 function cms_display_content(&$tem /*, 'where clause %", %i', string, int */) {
63         $args = array_slice(func_get_args(), 1);
64         $args = array_merge(array('cms_pages', 'id,title,keywords,description,layout,content,sidebar_content'), $args);
65         $row = call_user_func_array('db_get_assoc', $args);
66         if($row) {
67                 $tem->set('$cms_title', $row['title']);
68                 $tem->set('$meta_keywords', $row['keywords']);
69                 $tem->set('$meta_description', $row['description']);
70                 $tem->set('$cms_body', $row['content']);
71                 if ($row['layout'] === '' || $row['layout'] === '0') {
72                         $tem->set('$layout_centerer_class', 'full');
73                 } else {
74                         $tem->set('$layout_centerer_class', 'with_sidebar');
75                         if ($row['layout'] === '1') {
76                                 $tem->set('$layout_sidebar_class', 'plain');
77                         } else {
78                                 $tem->set('$layout_sidebar_class', 'bordered');
79                         }
80                         $tem->set('$cms_sidebar', $row['sidebar_content']);
81                 }
82                 return $row['id'];
83         } else {
84                 $tem->set('$layout_centerer_class', 'full');
85         }
86         return false;
87 }