Dotclear

source: admin/plugin.php @ 1490:60501ef579eb

Revision 1490:60501ef579eb, 2.3 KB checked in by Dsls, 11 years ago (diff)

Fusion avec default

Line 
1<?php
2# -- BEGIN LICENSE BLOCK ---------------------------------------
3#
4# This file is part of Dotclear 2.
5#
6# Copyright (c) 2003-2011 Olivier Meunier & Association Dotclear
7# Licensed under the GPL version 2.0 license.
8# See LICENSE file or
9# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
10#
11# -- END LICENSE BLOCK -----------------------------------------
12
13require dirname(__FILE__).'/../inc/admin/prepend.php';
14
15dcPage::check('usage,contentadmin');
16
17$has_content = false;
18$p_file = '';
19$p = !empty($_REQUEST['p']) ? $_REQUEST['p'] : null;
20$popup = $_ctx->popup = (integer) !empty($_REQUEST['popup']);
21
22if ($core->plugins->moduleExists($p)) {
23     $p_file = $core->plugins->moduleRoot($p).'/index.php';
24}
25if (file_exists($p_file)) {
26
27//* Keep this for old style plugins using dcPage
28     if ($popup) {
29          $open_f = array('dcPage','openPopup');
30          $close_f = array('dcPage','closePopup');
31     } else {
32          $open_f = array('dcPage','open');
33          $close_f = array('dcPage','close');
34     }
35     
36     $p_info = $core->plugins->getModules($p);
37     $p_url = 'plugin.php?p='.$p;
38     $p_title = $p_head = $p_content = '';
39//*/
40     # Get page content
41     ob_start();
42     include $p_file;
43     $res = ob_get_contents();
44     ob_end_clean();
45
46     # Check context and display
47     if ($_ctx->hasPageTitle() && !empty($res)) {
48          $has_content = true;
49          echo $res;
50     }
51//* Keep this for old style plugins using dcPage
52     elseif (!$_ctx->hasPageTitle()) {
53         
54          if (preg_match('|<head>(.*?)</head|ms',$res,$m)) {
55               if (preg_match('|<title>(.*?)</title>|ms',$m[1],$mt)) {
56                    $p_title = $mt[1];
57               }
58               
59               if (preg_match_all('|(<script.*?>.*?</script>)|ms',$m[1],$ms)) {
60                    foreach ($ms[1] as $v) {
61                         $p_head .= $v."\n";
62                    }
63               }
64               
65               if (preg_match_all('|(<style.*?>.*?</style>)|ms',$m[1],$ms)) {
66                    foreach ($ms[1] as $v) {
67                         $p_head .= $v."\n";
68                    }
69               }
70               
71               if (preg_match_all('|(<link.*?/>)|ms',$m[1],$ms)) {
72                    foreach ($ms[1] as $v) {
73                         $p_head .= $v."\n";
74                    }
75               }
76          }
77         
78          if (preg_match('|<body.*?>(.+)</body>|ms',$res,$m)) {
79               $p_content = $m[1];
80               
81               call_user_func($open_f,$p_title,$p_head);
82               echo $p_content;
83               call_user_func($close_f);
84               
85               $has_content = true;
86          }
87     }
88//*/
89}
90# No plugin or content found
91if (!$has_content) {
92     $_ctx->setBreadcrumb(__('Plugin not found'));
93     $_ctx->addError(__('The plugin you reached does not exist or does not have an admin page.'));
94     $core->tpl->display('plugin.html.twig');
95}
96?>
Note: See TracBrowser for help on using the repository browser.

Sites map