Sindbad~EG File Manager
<?php
# MantisBT - A PHP based bugtracking system
# MantisBT 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, either version 2 of the License, or
# (at your option) any later version.
#
# MantisBT 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 MantisBT. If not, see <http://www.gnu.org/licenses/>.
/**
* Collapse API
*
* @package CoreAPI
* @subpackage CollapseAPI
* @copyright Copyright 2000 - 2002 Kenzaburo Ito - kenito@300baud.org
* @copyright Copyright 2002 MantisBT Team - mantisbt-dev@lists.sourceforge.net
* @link http://www.mantisbt.org
*
* @uses authentication_api.php
* @uses config_api.php
* @uses constant_inc.php
* @uses current_user_api.php
* @uses gpc_api.php
* @uses tokens_api.php
* @uses utility_api.php
*/
require_api( 'authentication_api.php' );
require_api( 'config_api.php' );
require_api( 'constant_inc.php' );
require_api( 'current_user_api.php' );
require_api( 'gpc_api.php' );
require_api( 'tokens_api.php' );
require_api( 'utility_api.php' );
# @global string $g_current_collapse_section
$g_current_collapse_section = null;
# @global bool $g_open_collapse_section
$g_open_collapse_section = false;
# @global string $g_collapse_cache_token
$g_collapse_cache_token = null;
/**
* Marks the beginning of a collapse block's open phase.
* This will be visible if the block is expanded or javascript is disabled.
* @param string $p_name Collapse block name.
* @param string $p_section Collapse block section.
* @param string $p_css_class CSS class to apply to the div (defaults to none).
* @return void
*/
function collapse_open( $p_name, $p_section = '', $p_css_class = '' ) {
global $g_current_collapse_section, $g_open_collapse_section;
$t_block = ( is_blank( $p_section ) ? $p_name : $p_section . '_' . $p_name );
$t_display = is_collapsed( $t_block );
# make sure no other collapse section is started
if( $g_current_collapse_section !== null ) {
trigger_error( ERROR_GENERIC, ERROR );
}
if( $t_display ) {
$p_css_class .= ' collapse-open noprint';
} else {
$p_css_class .= ' collapse-closed noprint';
}
$g_open_collapse_section = true;
$g_current_collapse_section = $t_block;
$t_div_id = $t_block . '_open';
echo "\n" . '<div id="' . $t_div_id . '" class="' . $p_css_class . '">';
}
/**
* Marks the end of a collapse block's open phase and the beginning
* of the closed phase.
* This will be visible if the block is collapsed and javascript is enabled.
* @param string $p_name Collapse block name.
* @param string $p_section Collapse block section.
* @return void
*/
function collapse_closed( $p_name, $p_section = '' ) {
global $g_current_collapse_section, $g_open_collapse_section;
$t_block = ( is_blank( $p_section ) ? $p_name : $p_section . '_' . $p_name );
$t_display = !is_collapsed( $t_block );
# Make sure a section is opened, and it is the same section.
if( $t_block !== $g_current_collapse_section ) {
trigger_error( ERROR_GENERIC, ERROR );
}
echo '</div>';
$g_open_collapse_section = false;
$t_div_id = $t_block . '_closed';
$t_collapse_status_class = $t_display ? 'collapse-open' : 'collapse-closed';
echo "\n" . '<div id="', $t_div_id,
'" class="collapse-section-closed ' . $t_collapse_status_class . '">';
}
/**
* Marks the location where a +/- icon is placed in output
* for the user to toggle the collapse block status.
* This should appear in both the open and closed phase of a block.
* @param string $p_name Collapse block name.
* @param string $p_section Collapse block section.
* @return void
*/
function collapse_icon( $p_name, $p_section = '' ) {
global $g_open_collapse_section;
if( $g_open_collapse_section === true ) {
$t_icon = 'fa-minus-square-o';
$t_alt = '-';
$t_id = $p_name . '_open_link';
} else {
$t_icon = 'fa-plus-square-o';
$t_alt = '+';
$t_id = $p_name. '_closed_link';
}
echo '<a id="', $t_id, '" class="collapse-link noprint"><i class="fa ', $t_icon, '" alt="', $t_alt, '"></i></a>';
}
/**
* Marks the end of a collapse block's closed phase.
* @param string $p_name Collapse block name.
* @param string $p_section Collapse block section.
* @return void
*/
function collapse_end( $p_name, $p_section = '' ) {
global $g_current_collapse_section, $g_open_collapse_section;
$t_block = ( is_blank( $p_section ) ? $p_name : $p_section . '_' . $p_name );
is_collapsed( $t_block );
# Make sure a section is opened, and it is the same section.
if( $t_block !== $g_current_collapse_section ) {
trigger_error( ERROR_GENERIC, ERROR );
}
echo '</div>';
$g_open_collapse_section = false;
$g_current_collapse_section = null;
}
/**
* Determine if a block should be collapsed by default.
* @param string $p_block Collapse block.
* @return boolean
*/
function is_collapsed( $p_block ) {
global $g_collapse_cache_token;
if( !isset( $g_collapse_cache_token[$p_block] ) ) {
return false;
}
return( true == $g_collapse_cache_token[$p_block] );
}
/**
* Cache collapse API data from the database for the current user.
* If the collapse cookie has been set, grab the changes and re-save
* the token, or touch it otherwise.
* @return void
*/
function collapse_cache_token() {
global $g_collapse_cache_token;
if( !auth_is_user_authenticated() || current_user_is_anonymous() ) {
$g_collapse_cache_token = array();
return;
}
if( isset( $g_collapse_cache_token ) ) {
return;
}
$t_token = token_get_value( TOKEN_COLLAPSE );
if( !is_null( $t_token ) ) {
$t_data = json_decode( $t_token, true );
} else {
$t_data = array();
$t_data['filter'] = false;
}
$g_collapse_cache_token = $t_data;
$t_cookie = gpc_get_cookie( 'MANTIS_collapse_settings', '' );
if( false !== $t_cookie && !is_blank( $t_cookie ) ) {
$t_update = false;
$t_data = explode( '|', $t_cookie );
foreach( $t_data as $t_pair ) {
$t_pair = explode( ':', $t_pair );
if( false !== $t_pair && count( $t_pair ) == 2 ) {
$g_collapse_cache_token[$t_pair[0]] = ( true == $t_pair[1] );
$t_update = true;
}
}
if( !$t_update ) {
$t_token = token_get( TOKEN_COLLAPSE );
$t_update = $t_token !== null;
}
if( $t_update ) {
$t_value = json_encode( $g_collapse_cache_token );
token_set( TOKEN_COLLAPSE, $t_value, TOKEN_EXPIRY_COLLAPSE );
} elseif( token_exists( $t_token['id'] ) ) {
token_touch( $t_token['id'] );
}
gpc_clear_cookie( 'MANTIS_collapse_settings' );
}
}
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists