diff options
Diffstat (limited to '')
-rw-r--r-- | plugins/admin_advices/admin_advices.php | 194 |
1 files changed, 194 insertions, 0 deletions
diff --git a/plugins/admin_advices/admin_advices.php b/plugins/admin_advices/admin_advices.php new file mode 100644 index 000000000..ee2a3e797 --- /dev/null +++ b/plugins/admin_advices/admin_advices.php @@ -0,0 +1,194 @@ +<?php +// +-----------------------------------------------------------------------+ +// | Piwigo - a PHP based picture gallery | +// +-----------------------------------------------------------------------+ +// | Copyright(C) 2008 Piwigo Team http://piwigo.org | +// | Copyright(C) 2003-2008 Piwigo team http://phpwebgallery.net | +// | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | +// +-----------------------------------------------------------------------+ +// | This program is free software; you can redistribute it and/or modify | +// | it under the terms of the GNU General Public License as published by | +// | the Free Software Foundation | +// | | +// | This program is distributed in the hope that it will be useful, but | +// | WITHOUT ANY WARRANTY; without even the implied warranty of | +// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | +// | General Public License for more details. | +// | | +// | You should have received a copy of the GNU General Public License | +// | along with this program; if not, write to the Free Software | +// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, | +// | USA. | +// +-----------------------------------------------------------------------+ + +add_event_handler('loc_end_page_header', 'set_admin_advice_add_css' ); + +// Add a XHTML tag in HEAD section +function set_admin_advice_add_css() +{ + global $template, $page; + if ( isset($page['body_id']) and $page['body_id']=='theAdminPage' + and $page['page'] == 'intro' + ) + {// This Plugin works only on the Admin page + $template->append( + 'head_elements', + '<link rel="stylesheet" type="text/css" ' + . 'href="'.PHPWG_PLUGINS_PATH.'admin_advices/default-layout.css">' + ); + add_event_handler('loc_begin_page_tail', 'set_admin_advice' ); + } +} + +// Build an advice on the Admin Intro page +function set_admin_advice() +{ + global $page, $user, $template, $conf, $prefixeTable, $lang; + $my_path = dirname(__FILE__).'/'; + +// Include language advices + foreach ($conf as $key => $value) + { + if ( is_string($value) ) + { + $bool = ($value == 'false') ? false : $value; + $bool = ($value == 'true') ? true : $bool; + $conf[$key] = $bool; + } + } + $adv = array(); + ini_set('error_reporting', E_ALL); + ini_set('display_errors', true); + + include_once( $my_path."adv_set.php" ); + + $cases = range(0,count($lang['Adv_case'])-1); + srand ((double) microtime() * 10000000); + shuffle($cases); + + + $cond = false; + foreach ($cases as $id) + { + if (!isset($adv['c'][$id])) $adv['c'][$id] = true; + if (!isset($adv['n'][$id])) $adv['c'][$id] = false; + if (!isset($lang['Adv_case'][$id])) $adv['c'][$id] = false; + $cond = $adv['c'][$id]; + if ($cond) break; + } + $confk = $adv['n'][$id]; + if (substr($confk,0,2) == '**') $confk = substr($confk,2); + else $confk = '$conf[' . "'$confk']"; + $advice_text = (isset($adv['v'][$id])) ? $adv['v'][$id] : ''; + $more = $lang['Adv_case'][$id]; + + $template->set_filenames(array( + 'admin_advice' => $my_path.'admin_advices.tpl') + ); + +// Mysql status + $result = pwg_query('SHOW TABLE STATUS ;'); + $pwgspacef = $spacef = $pwgsize = $size = 0; + $len = strlen($prefixeTable); + $check = array(); + while ($row = mysql_fetch_array($result)) + { + $size += ($row['Data_length'] + $row['Index_length']); + $spacef += $row['Data_free']; + if ( substr( $row['Name'], 0, $len ) == $prefixeTable ) { + $pwgsize += ($row['Data_length'] + $row['Index_length']); + $pwgspacef += $row['Data_free']; + $check[] = (string) $row['Check_time']; + } + } + $size .= ' bytes'; + $pwgsize .= ' bytes'; + $spacef .= ' bytes'; + $pwgspacef .= ' bytes'; + if ($size > 1024) $size = round($size / 1024, 1) . ' Kb'; + if ($size > 1024) $size = round($size / 1024, 1) . ' Mb'; + if ($pwgsize > 1024) $pwgsize = round($pwgsize / 1024, 1) . ' Kb'; + if ($pwgsize > 1024) $pwgsize = round($pwgsize / 1024, 1) . ' Mb'; + if ($spacef > 1024) $spacef = round($spacef / 1024, 1) . ' Kb'; + if ($spacef > 1024) $spacef = round($spacef / 1024, 1) . ' Mb'; + if ($pwgspacef > 1024) $pwgspacef = round($pwgspacef / 1024, 1) . ' Kb'; + if ($pwgspacef > 1024) $pwgspacef = round($pwgspacef / 1024, 1) . ' Mb'; + $check = array_flip(array_flip($check)); + rsort($check); + $end = end($check); + $prev = prev($check); + $first = $check[0]; + $checkon = ''; + if (empty($end)) $end = $prev; + if ($end == $first) $checkon .= 'Last table check on: %s'; + else $checkon .= 'Most recent table check on: %s - oldest: %s'; + $checkon = sprintf($checkon, $first, $end); + $template->assign( + array( + 'prefixTable' => $prefixeTable, + 'pwgsize' => $pwgsize, + 'size' => $size, + 'checked_tables' => $checkon, + 'pwgspacef' => $pwgspacef, + 'spacef' => $spacef, + 'U_maintenance' => get_root_url() + . 'admin.php?page=maintenance&action=database', + ) + ); + +// If there is an advice + if ( $cond ) + { + +// Random Thumbnail + $query = ' +SELECT * +FROM '.IMAGES_TABLE.' +ORDER BY RAND(NOW()) +LIMIT 0, 1 +;'; + $result = pwg_query($query); + $row = mysql_fetch_assoc($result); + if ( is_array($row) ) + { + $url_modify = get_root_url().'admin.php?page=picture_modify' + .'&image_id='.$row['id']; + $query = ' +SELECT * FROM '.IMAGE_TAG_TABLE.' +WHERE image_id = ' . $row['id'] .' +;'; + $tag_count = mysql_num_rows(mysql_query($query)); + $template->assign('thumbnail', + array( + 'IMAGE' => get_thumbnail_url($row), + 'IMAGE_ALT' => $row['file'], + 'IMAGE_TITLE' => $row['name'], + 'METADATA' => (empty($row['date_metadata_update'])) ? + 'un' : '', + 'NAME' => (empty($row['name'])) ? + 'un' : '', + 'COMMENT' => (empty($row['comment'])) ? + 'un' : '', + 'AUTHOR' => (empty($row['author'])) ? + 'un' : '', + 'CREATE_DATE' => (empty($row['date_creation'])) ? + 'un' : '', + 'TAGS' => ($tag_count == 0) ? + 'un' : '', + 'NUM_TAGS' => $tag_count, + 'U_MODIFY' => $url_modify, + ) + ); + } + //$advice_text = array_shift($adv); + $template->assign( + array( + 'ADVICE_ABOUT' => $confk, + 'ADVICE_TEXT' => $advice_text, + ) + ); + $template->assign('More', $more ); + $template->pparse('admin_advice'); + } +} +?> |