source: extensions/Evil_Blog/main.inc.php @ 17932

Revision 17932, 6.0 KB checked in by EvilKant, 7 years ago (diff)
Line 
1<?php
2/*
3Version: 1.1.0
4Plugin Name: Evil_Blog
5Plugin URI: http://piwigo.org/ext/extension_view.php?eid=611
6Author: EvilKant
7Description: Small blog for your gallery.
8*/
9
10// Chech whether we are indeed included by Piwigo.
11if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
12 
13global $prefixeTable;
14// Определяем директорию плагина
15define('Evil_Blog_PATH', PHPWG_PLUGINS_PATH.basename(dirname(__FILE__)).'/');
16define('Evil_Blog_Admin', get_root_url() . 'admin.php?page=plugin-' . basename(dirname(__FILE__)));
17define('Evil_Blog_Table', $prefixeTable."evil_blog");
18//Включаем перевод плагина
19load_language('plugin.lang', Evil_Blog_PATH);
20
21//Делаем пункт меню в админке
22add_event_handler('get_admin_plugin_menu_links', 'Evil_Blog_admin_menu');
23
24function Evil_Blog_admin_menu($menu) {
25 array_push(
26   $menu,
27   array(
28     'NAME'  => 'Evil_Blog',
29     'URL'   => get_admin_plugin_menu_link(dirname(__FILE__)).'/admin.php'
30   )
31 );
32 return $menu;
33}
34
35
36function Evil_Blog_main () {
37        global $template, $tokens, $conf, $page;       
38               
39                //выковыриваем из базы настройки блога
40                $page['evil_blog'] = @unserialize($conf['evil_blog']);
41               
42                if (!$page['evil_blog']['show_on_main_page']) {
43                        //вызываем добавление пункта меню
44                        add_event_handler('blockmanager_apply', 'add_blog_to_menu');
45                        }
46       
47        if (((empty($tokens[0])) and ($page['evil_blog']['show_on_main_page'])) or 
48                ((!$page['evil_blog']['show_on_main_page']) and($tokens[0]=='blog'))) {//если дело происходит на главной странице, то...
49               
50                $post_per_page = $page['evil_blog']['posts_per_page'];
51                //узнаем количество записей в блоге
52                $row = pwg_db_fetch_assoc(pwg_query("SELECT COUNT(*) FROM `".Evil_Blog_Table."`"));;   
53
54                if ($row["COUNT(*)"] % $post_per_page != 0) {
55                        $pages = floor($row["COUNT(*)"] / $post_per_page)+1;
56                        } else {$pages = floor($row["COUNT(*)"] / $post_per_page);}
57                if ((empty($tokens[1])) or ($tokens[1]<=1)) {
58                        $number = 0;
59                        $npage = 1;
60                        } else {
61                                $npage = $tokens[1];
62                                if ($npage<=$pages) {
63                                        $number=($npage-1)*$post_per_page;
64                                        } else {
65                                        $number=($pages-1)*$post_per_page;
66                                        $npage=$pages;
67                                        }
68                        }
69       
70                $query =        "SELECT id, UNIX_TIMESTAMP(date) AS date, header, text
71                                        FROM `".Evil_Blog_Table."`
72                                        WHERE 1
73                                        ORDER BY `date` DESC
74                                        LIMIT ".$number.",".$post_per_page;
75                $result = pwg_query($query);
76                $qwe = 0;
77                while ($row = pwg_db_fetch_assoc($result)) {//более вменяемая обработка результата из базы, нужно для нормальной работы SMARTY
78                        $row1[$qwe] = $row;
79                        $row1[$qwe]['date'] = date($page['evil_blog']['date_format'], $row['date']); 
80                        $qwe++;
81                        }
82                if (!empty($row1)) {
83                        $template->assign('row', $row1);
84                        }
85                $template->assign('npage', $npage);
86                $template->assign('pages', $pages);
87                for ($it=1; $it<=$pages; $it++) {
88                        $pagi[$it] = $it;
89                        }
90                if (!empty($pagi)) { 
91                        $template->assign('pagi', $pagi);
92                        }
93                //определяем заголовок
94                if ($page['evil_blog']['show_on_main_page']) {
95                        $place = 'PLUGIN_INDEX_CONTENT_BEFORE';
96                        $template->assign('TITLE', '<div id="content" class="content contentWithMenu"><h2>'.$page['evil_blog']['blog_name'].'</h2>');
97                        $template->assign('TITLE_END', '</div>');
98                        $template->assign('first_page', 'index.php');
99                        }else{//хлебные крошки
100                        $place = 'PLUGIN_INDEX_CONTENT_END';
101                        $page['title'] = '<a href="'.get_gallery_home_url().'">'.l10n('Home').'</a>'.$conf['level_separator'].$page['evil_blog']['blog_name'];
102                        $template->assign('TITLE_END', ' ');
103                        $template->assign('first_page', 'index.php?/blog');
104                        }
105                //отсылаем в СМАРТИ настройки внешнего вида
106                $template->assign('show_number', $page['evil_blog']['show_number']);
107                $template->assign('show_date', $page['evil_blog']['show_date']);
108                $template->assign('show_on_main_page', $page['evil_blog']['show_on_main_page']);
109               
110                //определяем адрес шаблона плагина
111                $template->set_template_dir(Evil_Blog_PATH);
112                $template->set_filename('posts', 'posts.tpl');
113                //подключение стиля
114                $template->func_combine_css(array(
115        'path' => Evil_Blog_PATH.'posts.css',
116        )
117      );
118               
119                //объявляем где конкретно на странице должен вывестись наш шаблон плагина. Вся суть в 'PLUGIN_INDEX_CONTENT_BEFORE'.
120                $template->concat($place,  $template->parse('posts', true));
121        }
122}
123
124//описываем действия во время собырия loc_begin_index, ну тобишь выводим плагин на странице
125add_event_handler('loc_begin_index', 'Evil_Blog_main');
126
127//функция добавления пункта меню
128function add_blog_to_menu($aMenuRefArray) {
129        global $conf, $page;
130
131   //хрен его знает что это, какаято проверка на существование меню
132    $menu = &$aMenuRefArray[0];
133    $block_mbMenu = $menu->get_block('mbMenu');
134    if (null == $block_mbMenu) {
135      return;
136    }
137   
138    if (!isset($block_mbMenu->data['evil_blog'])) {
139      $blog_menu = array(
140          'TITLE' => $page['evil_blog']['blog_description'],
141          'NAME'  => $page['evil_blog']['blog_name'],
142          'URL'   => make_index_url(array('section' => 'blog')),
143        );
144      $block_mbMenu->data['evil_blog'] = $blog_menu;
145    }
146  }
147 
148function section_init_evil_blog() 
149{
150        global $page, $conf, $tokens;
151       
152        $eb_conf = @unserialize($conf['evil_blog']);
153        if ((!$eb_conf['show_on_main_page']) and (($tokens[0]=='blog'))) {
154                $page['section'] = 'blog';
155                }
156} 
157//инициация страницы блога, без этого на ней появляется список с категориями.   
158add_event_handler('loc_end_section_init', 'section_init_evil_blog');
159
160?>
Note: See TracBrowser for help on using the repository browser.