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

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