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

Revision 18395, 6.6 KB checked in by EvilKant, 7 years ago (diff)
Line 
1<?php
2/*
3Version: 1.1.2
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                //включаем Extended Description
43                $ExDesc = pwg_db_fetch_assoc(pwg_query("SELECT state FROM " . PLUGINS_TABLE . " WHERE id = 'ExtendedDescription';"));
44                if($ExDesc['state'] == 'active') {
45                        $page['evil_blog']['blog_name'] = get_user_language_desc($page['evil_blog']['blog_name']);
46                        $page['evil_blog']['blog_description'] = get_user_language_desc($page['evil_blog']['blog_description']);
47                        }
48               
49                if (!$page['evil_blog']['show_on_main_page']) {
50                        //вызываем добавление пункта меню
51                        add_event_handler('blockmanager_apply', 'add_blog_to_menu');
52                        }
53       
54        if (((empty($tokens[0])) and ($page['evil_blog']['show_on_main_page'])) or 
55                ((!$page['evil_blog']['show_on_main_page']) and($tokens[0]=='blog'))) {//если дело происходит на главной странице, то...
56               
57                $post_per_page = $page['evil_blog']['posts_per_page'];
58                //узнаем количество записей в блоге
59                $row = pwg_db_fetch_assoc(pwg_query("SELECT COUNT(*) FROM `".Evil_Blog_Table."`"));;   
60
61                if ($row["COUNT(*)"] % $post_per_page != 0) {
62                        $pages = floor($row["COUNT(*)"] / $post_per_page)+1;
63                        } else {$pages = floor($row["COUNT(*)"] / $post_per_page);}
64                if ((empty($_POST['npage'])) or ($_POST['npage']<=1)) {
65                        $number = 0;
66                        $npage = 1;
67                        } else {
68                                $npage = $_POST['npage'];
69                                if ($npage<=$pages) {
70                                        $number=($npage-1)*$post_per_page;
71                                        } else {
72                                        $number=($pages-1)*$post_per_page;
73                                        $npage=$pages;
74                                        }
75                        }
76       
77                $query =        "SELECT id, UNIX_TIMESTAMP(date) AS date, header, text
78                                        FROM `".Evil_Blog_Table."`
79                                        WHERE 1
80                                        ORDER BY `date` DESC
81                                        LIMIT ".$number.",".$post_per_page;
82                $result = pwg_query($query);
83                $qwe = 0;
84                while ($row = pwg_db_fetch_assoc($result)) {//более вменяемая обработка результата из базы, нужно для нормальной работы SMARTY
85                        $row1[$qwe] = $row;
86                        $row1[$qwe]['date'] = date($page['evil_blog']['date_format'], $row['date']); 
87                       
88                        if($ExDesc['state'] == 'active') {
89                                $row1[$qwe]['text'] = get_extended_desc($row['text']);
90                                $row1[$qwe]['header'] = get_user_language_desc($row['header']);
91                                }
92                        $qwe++;
93                        }
94                if (!empty($row1)) {
95                        $template->assign('row', $row1);
96                        }
97                $template->assign('npage', $npage);
98                $template->assign('pages', $pages);
99                for ($it=1; $it<=$pages; $it++) {
100                        $pagi[$it] = $it;
101                        }
102                if (!empty($pagi)) { 
103                        $template->assign('pagi', $pagi);
104                        }
105                //определяем заголовок
106                if ($page['evil_blog']['show_on_main_page']) {
107                        $place = 'PLUGIN_INDEX_CONTENT_BEFORE';
108                        $template->assign('TITLE', '<div id="content" class="content contentWithMenu"><h2>'.$page['evil_blog']['blog_name'].'</h2>');
109                        $template->assign('TITLE_END', '</div>');
110                        $template->assign('first_page', 'index.php');
111                        }else{//хлебные крошки
112                        $place = 'PLUGIN_INDEX_CONTENT_END';
113                        $page['title'] = '<a href="'.get_gallery_home_url().'">'.l10n('Home').'</a>'.$conf['level_separator'].$page['evil_blog']['blog_name'];
114                        $template->assign('TITLE_END', ' ');
115                        $template->assign('first_page', 'index.php?/blog');
116                        }
117                //отсылаем в СМАРТИ настройки внешнего вида
118                $template->assign('show_number', $page['evil_blog']['show_number']);
119                $template->assign('show_date', $page['evil_blog']['show_date']);
120                $template->assign('show_on_main_page', $page['evil_blog']['show_on_main_page']);
121               
122                //определяем адрес шаблона плагина
123                $template->set_template_dir(Evil_Blog_PATH);
124                $template->set_filename('posts', 'posts.tpl');
125                //подключение стиля
126                $template->func_combine_css(array(
127        'path' => Evil_Blog_PATH.'posts.css',
128        )
129      );
130               
131                //объявляем где конкретно на странице должен вывестись наш шаблон плагина. Вся суть в 'PLUGIN_INDEX_CONTENT_BEFORE'.
132                $template->concat($place,  $template->parse('posts', true));
133        }
134}
135
136//описываем действия во время собырия loc_begin_index, ну тобишь выводим плагин на странице
137add_event_handler('loc_begin_index', 'Evil_Blog_main');
138
139//функция добавления пункта меню
140function add_blog_to_menu($aMenuRefArray) {
141        global $conf, $page;
142
143   //хрен его знает что это, какаято проверка на существование меню
144    $menu = &$aMenuRefArray[0];
145    $block_mbMenu = $menu->get_block('mbMenu');
146    if (null == $block_mbMenu) {
147      return;
148    }
149   
150    if (!isset($block_mbMenu->data['evil_blog'])) {
151      $blog_menu = array(
152          'TITLE' => $page['evil_blog']['blog_description'],
153          'NAME'  => $page['evil_blog']['blog_name'],
154          'URL'   => make_index_url(array('section' => 'blog')),
155        );
156      $block_mbMenu->data['evil_blog'] = $blog_menu;
157    }
158  }
159 
160function section_init_evil_blog() 
161{
162        global $page, $conf, $tokens;
163       
164        $eb_conf = @unserialize($conf['evil_blog']);
165        if ((!$eb_conf['show_on_main_page']) and (($tokens[0]=='blog'))) {
166                $page['section'] = 'blog';
167                }
168} 
169//инициация страницы блога, без этого на ней появляется список с категориями.   
170add_event_handler('loc_end_section_init', 'section_init_evil_blog');
171
172?>
Note: See TracBrowser for help on using the repository browser.