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/>.
/**
* News API
*
* @package CoreAPI
* @subpackage NewsAPI
* @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 access_api.php
* @uses config_api.php
* @uses constant_inc.php
* @uses current_user_api.php
* @uses database_api.php
* @uses error_api.php
* @uses helper_api.php
* @uses lang_api.php
* @uses utility_api.php
*/
require_api( 'access_api.php' );
require_api( 'config_api.php' );
require_api( 'constant_inc.php' );
require_api( 'current_user_api.php' );
require_api( 'database_api.php' );
require_api( 'error_api.php' );
require_api( 'helper_api.php' );
require_api( 'lang_api.php' );
require_api( 'utility_api.php' );
/**
* Add a news item
*
* @param integer $p_project_id A project identifier.
* @param integer $p_poster_id The user id of poster.
* @param integer $p_view_state View state.
* @param boolean $p_announcement Whether article is an announcement.
* @param string $p_headline News Headline.
* @param string $p_body News Body.
* @return integer news article id
*/
function news_create( $p_project_id, $p_poster_id, $p_view_state, $p_announcement, $p_headline, $p_body ) {
if( is_blank( $p_headline ) ) {
error_parameters( lang_get( 'headline' ) );
trigger_error( ERROR_EMPTY_FIELD, ERROR );
}
if( is_blank( $p_body ) ) {
error_parameters( lang_get( 'body' ) );
trigger_error( ERROR_EMPTY_FIELD, ERROR );
}
db_param_push();
$t_query = 'INSERT INTO {news}
( project_id, poster_id, date_posted, last_modified,
view_state, announcement, headline, body )
VALUES
( ' . db_param() . ',
' . db_param() . ',
' . db_param() . ',
' . db_param() . ',
' . db_param() . ',
' . db_param() . ',
' . db_param() . ',
' . db_param() . '
)';
db_query( $t_query, array( (int)$p_project_id, (int)$p_poster_id, db_now(), db_now(), (int)$p_view_state, $p_announcement, $p_headline, $p_body ) );
$t_news_id = db_insert_id( db_get_table( 'news' ) );
return $t_news_id;
}
/**
* Delete the news entry
*
* @param integer $p_news_id A news article identifier.
* @return void
*/
function news_delete( $p_news_id ) {
db_param_push();
$t_query = 'DELETE FROM {news} WHERE id=' . db_param();
db_query( $t_query, array( $p_news_id ) );
}
/**
* Delete the news entry
*
* @param integer $p_project_id A project identifier.
* @return void
*/
function news_delete_all( $p_project_id ) {
db_param_push();
$t_query = 'DELETE FROM {news} WHERE project_id=' . db_param();
db_query( $t_query, array( (int)$p_project_id ) );
}
/**
* Update news item
*
* @param integer $p_news_id A news article identifier.
* @param integer $p_project_id A project identifier.
* @param integer $p_view_state View state.
* @param boolean $p_announcement Whether article is an announcement.
* @param string $p_headline News headline.
* @param string $p_body News body.
* @return void
*/
function news_update( $p_news_id, $p_project_id, $p_view_state, $p_announcement, $p_headline, $p_body ) {
if( is_blank( $p_headline ) ) {
error_parameters( lang_get( 'headline' ) );
trigger_error( ERROR_EMPTY_FIELD, ERROR );
}
if( is_blank( $p_body ) ) {
error_parameters( lang_get( 'body' ) );
trigger_error( ERROR_EMPTY_FIELD, ERROR );
}
# Update entry
db_param_push();
$t_query = 'UPDATE {news}
SET view_state=' . db_param() . ',
announcement=' . db_param() . ',
headline=' . db_param() . ',
body=' . db_param() . ',
project_id=' . db_param() . ',
last_modified= ' . db_param() . '
WHERE id=' . db_param();
db_query( $t_query, array( $p_view_state, $p_announcement, $p_headline, $p_body, $p_project_id, db_now(), $p_news_id ) );
}
/**
* Selects the news item associated with the specified id
*
* @param integer $p_news_id A news article identifier.
* @return array news article
*/
function news_get_row( $p_news_id ) {
db_param_push();
$t_query = 'SELECT * FROM {news} WHERE id=' . db_param();
$t_result = db_query( $t_query, array( $p_news_id ) );
$t_row = db_fetch_array( $t_result );
if( !$t_row ) {
trigger_error( ERROR_NEWS_NOT_FOUND, ERROR );
} else {
return $t_row;
}
}
/**
* get news count (selected project plus site wide posts)
*
* @param integer $p_project_id A project identifier.
* @param boolean $p_global Whether this is site wide news i.e. ALL_PROJECTS.
* @return int news count
*/
function news_get_count( $p_project_id, $p_global = true ) {
$t_project_where = helper_project_specific_where( $p_project_id );
$t_query = 'SELECT COUNT(*) FROM {news} WHERE ' . $t_project_where;
if( $p_global ) {
$t_query .= ' OR project_id=' . ALL_PROJECTS;
}
$t_result = db_query( $t_query );
return db_result( $t_result, 0 );
}
/**
* get news items (selected project plus site wide posts)
*
* @param integer $p_project_id A project identifier.
* @param boolean $p_global Whether this is site wide news i.e. ALL_PROJECTS.
* @return array Array of news articles
*/
function news_get_rows( $p_project_id, $p_global = true ) {
$t_projects = current_user_get_all_accessible_subprojects( $p_project_id );
$t_projects[] = (int)$p_project_id;
if( $p_global && ALL_PROJECTS != $p_project_id ) {
$t_projects[] = ALL_PROJECTS;
}
$t_query = 'SELECT * FROM {news}';
if( 1 == count( $t_projects ) ) {
$c_project_id = $t_projects[0];
$t_query .= ' WHERE project_id=\'$c_project_id\'';
} else {
$t_query .= ' WHERE project_id IN (' . join( $t_projects, ',' ) . ')';
}
$t_query .= ' ORDER BY date_posted DESC';
$t_result = db_query( $t_query, array() );
$t_rows = array();
while( $t_row = db_fetch_array( $t_result ) ) {
array_push( $t_rows, $t_row );
}
return $t_rows;
}
/**
* Get field from news item
*
* @param integer $p_news_id A news article identifier.
* @param string $p_field_name The field name to retrieve.
* @return mixed
*/
function news_get_field( $p_news_id, $p_field_name ) {
$t_row = news_get_row( $p_news_id );
return( $t_row[$p_field_name] );
}
/**
* Check if the specified news item is private
*
* @param integer $p_news_id A news article identifier.
* @return boolean
*/
function news_is_private( $p_news_id ) {
return( news_get_field( $p_news_id, 'view_state' ) == VS_PRIVATE );
}
/**
* Gets a limited set of news rows to be viewed on one page based on the criteria
* defined in the configuration file.
*
* @param integer $p_offset Offset.
* @param integer $p_project_id A project identifier.
* @return array
*/
function news_get_limited_rows( $p_offset, $p_project_id = null ) {
if( $p_project_id === null ) {
$p_project_id = helper_get_current_project();
}
$c_offset = (int)$p_offset;
$t_projects = current_user_get_all_accessible_subprojects( $p_project_id );
$t_projects[] = (int)$p_project_id;
if( ALL_PROJECTS != $p_project_id ) {
$t_projects[] = ALL_PROJECTS;
}
$t_news_view_limit = config_get( 'news_view_limit' );
$t_news_view_limit_days = config_get( 'news_view_limit_days' ) * SECONDS_PER_DAY;
switch( config_get( 'news_limit_method' ) ) {
case 0:
db_param_push();
# BY_LIMIT - Select the news posts
$t_query = 'SELECT * FROM {news}';
if( 1 == count( $t_projects ) ) {
$c_project_id = $t_projects[0];
$t_query .= ' WHERE project_id=' . db_param();
$t_params = array( $c_project_id );
} else {
$t_query .= ' WHERE project_id IN (' . join( $t_projects, ',' ) . ')';
$t_params = null;
}
$t_query .= ' ORDER BY announcement DESC, id DESC';
$t_result = db_query( $t_query, $t_params, $t_news_view_limit, $c_offset );
break;
case 1:
db_param_push();
# BY_DATE - Select the news posts
$t_query = 'SELECT * FROM {news} WHERE
( ' . db_helper_compare_time( db_param(), '<', 'date_posted', $t_news_view_limit_days ) . '
OR announcement = ' . db_param() . ' ) ';
$t_params = array(
db_now(),
1,
);
if( 1 == count( $t_projects ) ) {
$c_project_id = $t_projects[0];
$t_query .= ' AND project_id=' . db_param();
$t_params[] = $c_project_id;
} else {
$t_query .= ' AND project_id IN (' . join( $t_projects, ',' ) . ')';
}
$t_query .= ' ORDER BY announcement DESC, id DESC';
$t_result = db_query( $t_query, $t_params, $t_news_view_limit, $c_offset );
break;
}
$t_rows = array();
while( $t_row = db_fetch_array( $t_result ) ) {
array_push( $t_rows, $t_row );
}
return $t_rows;
}
/**
* Checks if the news feature is enabled or not.
* true: enabled, otherwise false.
* @return boolean
*/
function news_is_enabled() {
return config_get( 'news_enabled' ) == ON;
}
/**
* Ensures that the news feature is enabled, otherwise generates an access denied error.
* @return void
*/
function news_ensure_enabled() {
if( !news_is_enabled() ) {
access_denied();
}
}
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists