//
// ------------------------------------------------------------------------ //
// 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; either version 2 of the License, or //
// (at your option) any later version. //
// //
// You may not change or alter any portion of this comment or credits //
// of supporting developers from this source code or any supporting //
// source code which is considered copyrighted (c) material of the //
// original comment or credit authors. //
// //
// 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 //
// ------------------------------------------------------------------------ //
// Author: Tobias Liegl (AKA CHAPI) //
// Site: http://www.chapi.de //
// Project: The XOOPS Project //
// ------------------------------------------------------------------------- //
// Hacker: GIJ=CHECKMATE (AKA GIJOE) //
// Site: http://www.peak.ne.jp/xoops/ //
// ------------------------------------------------------------------------- //
// for Duplicatable V2.1
$mydirname = basename( dirname( dirname( __FILE__ ) ) ) ;
if( ! preg_match( '/^(\D+)(\d*)$/' , $mydirname , $regs ) ) echo ( "invalid dirname: " . htmlspecialchars( $mydirname ) ) ;
$mydirnumber = $regs[2] === '' ? '' : intval( $regs[2] ) ;
// includes
include '../../../include/cp_header.php';
include_once "../include/constants.inc.php";
include_once XOOPS_ROOT_PATH.'/class/xoopsformloader.php';
include_once '../class/tinyd.textsanitizer.php';
include_once '../include/gtickets.php';
// page wrap search
$page_wrap_search_allowed_exts = array( 'html','htm','phtml','php','php3','php4','txt' ) ;
// also reading language files of modinfo & main
if ( file_exists( "../language/{$xoopsConfig['language']}/modinfo.php" ) ) {
include( "../language/{$xoopsConfig['language']}/modinfo.php" ) ;
include( "../language/{$xoopsConfig['language']}/main.php" ) ;
} else {
include( "../language/english/modinfo.php" ) ;
include( "../language/english/main.php" ) ;
}
// emulates mb functions
if( ! function_exists( 'mb_convert_encoding' ) ) {
function mb_convert_encoding( $str ) { return $str ; }
}
if( ! function_exists( 'mb_internal_encoding' ) ) {
function mb_internal_encoding( $str ) { return "UTF-8" ; }
}
// these initializing code is provisional. they will be removed
$globals = array(
'op' => '' ,
'id' => 0
) ;
foreach( $globals as $global => $default ) {
if( isset( $_GET[ $global ] ) ) $$global = $_GET[ $global ] ;
else if( isset( $_POST[ $global ] ) ) $$global = $_POST[ $global ] ;
else $$global = $default ;
}
$id = intval( $id ) ;
// end of initialization
// submit redirection
if( ! empty( $_POST['preview'] ) && $op == 'add' ) $op = 'submit' ;
if( ! empty( $_POST['preview'] ) && $op == 'editit' ) $op = 'edit' ;
if( ! empty( $_POST['moveto'] ) && $op == 'update' ) $op = 'moveto' ;
if( ! empty( $_POST['cancel'] ) ) {
redirect_header( 'index.php?op=show' , 0 , _CANCEL ) ;
exit ;
}
// utility variables
$mymodpath = XOOPS_ROOT_PATH."/modules/$mydirname" ;
$mymodurl = XOOPS_URL."/modules/$mydirname" ;
$wrap_path = XOOPS_ROOT_PATH."/modules/$mydirname/content" ;
$mytablename = $xoopsDB->prefix( "tinycontent{$mydirnumber}" ) ;
$myts =& TinyDTextSanitizer::getInstance() ;
// ------------------------------------------------------------------------- //
// Switch Statement for the different operations //
// ------------------------------------------------------------------------- //
$xoopsDB =& Database::getInstance();
switch( $op ) {
// ------------------------------------------------------------------------- //
// Show Content Page -> Overview //
// ------------------------------------------------------------------------- //
default :
$mymenu_fake_uri = $_SERVER['REQUEST_URI'] . '?op=show' ;
case "show":
xoops_cp_header();
include( dirname(__FILE__).'/mymenu.php' ) ;
if( check_browser_can_use_spaw() ) {
$can_use_spaw = true ;
$submitlink_with_spaw = "(SPAW)" ;
} else {
$can_use_spaw = false ;
$submitlink_with_spaw = '' ;
}
// get all instances of TinyD using newblocks table
$rs = $xoopsDB->query( "SELECT mid FROM ".$xoopsDB->prefix("newblocks")." WHERE func_file='tinycontent_navigation.php'" ) ;
$whr_mid = 'mid IN (' ;
while( list( $mid ) = $xoopsDB->fetchRow( $rs ) ) {
$whr_mid .= intval( $mid ) . ',' ;
}
$whr_mid .= "0)" ;
$rs = $xoopsDB->query( "SELECT mid,dirname,name FROM ".$xoopsDB->prefix("modules")." WHERE $whr_mid ORDER BY weight,mid" ) ;
$dest_tinyd_options = "\n" ;
while( list( $mid , $dirname , $name ) = $xoopsDB->fetchRow( $rs ) ) {
if( $dirname == $mydirname ) continue ;
if( ! $xoopsUser->isAdmin( $mid ) ) continue ;
$name4disp = htmlspecialchars( $name , ENT_QUOTES ) ;
$dest_tinyd_options .= "\n" ;
}
echo "
".$xoopsModule->getVar('name')."
"._TC_TH_VISIBLE.":"._TC_VISIBLE."
"._TC_TH_SUBMENU.":"._TC_SUBMENU."
"._TC_TH_ENABLECOM.":"._TC_ENABLECOM."
\n";
xoops_cp_footer();
break;
// ------------------------------------------------------------------------- //
// Update Content -> Show Content Page //
// ------------------------------------------------------------------------- //
case "update":
// Ticket Check
if ( ! $xoopsGTicket->check() ) {
redirect_header(XOOPS_URL.'/',3,$xoopsGTicket->getErrors());
}
if( ! is_array( $_POST['id'] ) ) break ;
$homepage = empty( $_POST['homepage'] ) ? 0 : intval( $_POST['homepage'] ) ;
foreach( $_POST['id'] as $storyid ) {
$storyid = intval( $storyid ) ;
if( $homepage == 0 ) {
$hp_flag = 1 ;
$homepage = $storyid ;
} else {
$hp_flag = $storyid == $homepage ? 1 : 0 ;
}
$blockid = empty( $_POST['blockid'][ $storyid ] ) ? 0 : intval( $_POST['blockid'][ $storyid ] ) ;
$visible = empty( $_POST['visible'][ $storyid ] ) ? 0 : 1 ;
$nocomments = empty( $_POST['comments'][ $storyid ] ) ? 1 : 0 ;
$submenu = empty( $_POST['submenu'][ $storyid ] ) ? 0 : 1 ;
$sql = "UPDATE $mytablename SET blockid='$blockid',visible='$visible',homepage='$hp_flag',nocomments='$nocomments',submenu='$submenu',last_modified=last_modified WHERE storyid='$storyid'" ;
$xoopsDB->query( $sql ) or die( _TC_ERRORINSERT ) ;
}
redirect_header( "index.php?op=show" , 1 , _TC_DBUPDATED ) ;
exit ;
break ;
// ------------------------------------------------------------------------- //
// Show add or edit content Page //
// ------------------------------------------------------------------------- //
case "submit" :
case "edit" :
xoops_cp_header() ;
include( dirname(__FILE__).'/mymenu.php' ) ;
// initialization
if( ! empty( $_POST['preview'] ) ) {
$globals = array(
'id' => 0 ,
'title' => '' ,
'message' => '' ,
'visible' => 0 ,
'nohtml' => 0 ,
'nosmiley' => 0 ,
'nobreaks' => 0 ,
'nocomments' => 0 ,
'submenu' => 0 ,
'last_modified' => 0 ,
'created' => 0 ,
'html_header' => ''
) ;
foreach( $globals as $global => $default ) {
if( isset( $_POST[ $global ] ) ) $$global = $myts->stripSlashesGPC( $_POST[ $global ] ) ;
else $$global = $default ;
}
$storyid = intval( $id ) ;
// write posted data into sesion
$_SESSION['tinyd_preview_post'] = array(
'message' => $message ,
'nohtml' => intval( $nohtml ) ,
'nosmiley' => intval( $nosmiley ) ,
'nobreaks' => intval( $nobreaks )
) ;
/* $content_cache = "{$mydirname}_preview_" . time() ;
$fp = fopen( XOOPS_CACHE_PATH . '/' . $content_cache , 'w' ) ;
if( $fp === false ) {
unset( $_POST['preview'] ) ;
} else {
fwrite( $fp , $message , 65536 ) ;
fclose( $fp ) ;
}*/
} else if( $op == 'edit' ) {
$result = $xoopsDB->query( "SELECT storyid,title,text,visible,nohtml,nosmiley,nobreaks,nocomments,submenu,UNIX_TIMESTAMP(last_modified),UNIX_TIMESTAMP(created),html_header FROM $mytablename WHERE storyid='$id'" ) ;
list($storyid,$title,$message,$visible,$nohtml,$nosmiley,$nobreaks,$nocomments,$submenu,$last_modified,$created,$html_header) = $xoopsDB->fetchRow( $result ) ;
} else {
list($storyid,$title,$message,$visible,$nohtml,$nosmiley,$nobreaks,$nocomments,$submenu,$last_modified,$created,$html_header) = array(0,'','',1,0,0,1,0,1,0,0,'');
}
if( $op == 'edit' ) {
$form_title = _TC_EDITCONTENT ;
$next_op = "editit" ;
} else {
$form_title = _TC_ADDCONTENT ;
$next_op = "add" ;
}
// get configs
$tarea_width = empty( $xoopsModuleConfig['tc_tarea_width'] ) ? 35 : intval( $xoopsModuleConfig['tc_tarea_width'] ) ;
$header_tarea_height = empty( $xoopsModuleConfig['tc_header_tarea_height'] ) ? 0 : intval( $xoopsModuleConfig['tc_header_tarea_height'] ) ;
$body_tarea_height = empty( $xoopsModuleConfig['tc_tarea_height'] ) ? 37 : intval( $xoopsModuleConfig['tc_tarea_height'] ) ;
// title and textarea selection
$js_confirm = 'if(MainForm.message.value!="") return confirm("'._TC_JS_CONFIRMDISCARD.'");' ;
echo "
\n" ;
// Form target
if( ! empty( $_GET['usespaw'] ) ) {
$form_target = 'index.php?usespaw=1' ;
} else if( ! empty( $_GET['useplain'] ) ) {
$form_target = 'index.php?useplain=1' ;
} else {
$form_target = 'index.php' ;
}
// beggining of xoopsForm
$form = new XoopsThemeForm( $form_title , "MainForm" , $form_target ) ;
// title
$form->addElement( new XoopsFormText( _TC_LINKNAME , "title" , 50 , 255 , htmlspecialchars( $title , ENT_QUOTES ) ) ) ;
// html header
if( $header_tarea_height > 0 ) {
$h_area = new XoopsFormTextArea( _TC_HTML_HEADER , 'html_header' , htmlspecialchars( $html_header , ENT_QUOTES ) , $header_tarea_height , $tarea_width ) ;
$h_area->setExtra( "style='width: {$tarea_width}em;'" ) ;
$form->addElement( $h_area ) ;
} else {
$form->addElement( new XoopsFormHidden( 'html_header' , htmlspecialchars( $html_header , ENT_QUOTES ) ) ) ;
}
// content body
$spaw_flag = false ;
if( ! empty( $_GET['usespaw'] ) ) {
// SPAW Config
include XOOPS_ROOT_PATH.'/common/spaw/spaw_control.class.php' ;
if( check_browser_can_use_spaw() ) {
ob_start() ;
$sw = new SPAW_Wysiwyg( 'message' , $message ) ;
$sw->show() ;
$form->addElement( new XoopsFormLabel( _TC_CONTENT , ob_get_contents() ) ) ;
ob_end_clean() ;
$spaw_flag = true ;
}
}
if( ! $spaw_flag ) {
if( empty( $_GET['useplain'] ) ) {
$t_area = new XoopsFormDhtmlTextArea( _TC_CONTENT , 'message' , htmlspecialchars( $message , ENT_QUOTES ) , $body_tarea_height , $tarea_width ) ;
} else {
$t_area = new XoopsFormTextArea( _TC_CONTENT . "
Text_Wiki Sample" , 'message' , htmlspecialchars( $message , ENT_QUOTES ) , $body_tarea_height , $tarea_width ) ;
}
$t_area->setExtra( "style='width: {$tarea_width}em;'" ) ;
$form->addElement( $t_area ) ;
}
// options
$option_tray = new XoopsFormElementTray( _OPTIONS , '
' ) ;
// smiley
$smiley_checkbox = new XoopsFormCheckBox( '' , 'nosmiley', $nosmiley ) ;
$smiley_checkbox->addOption( 1 , _DISABLESMILEY ) ;
$option_tray->addElement( $smiley_checkbox ) ;
// nobreaks
if( $spaw_flag ) {
$form->addElement( new XoopsFormHidden( 'nobreaks' , 1 ) ) ;
} else {
$breaks_checkbox = new XoopsFormCheckBox( '' , 'nobreaks' , $nobreaks ) ;
$breaks_checkbox->addOption( 1 , _TC_DISABLEBREAKS ) ;
$option_tray->addElement( $breaks_checkbox ) ;
}
// visible
$visible_checkbox = new XoopsFormCheckBox( '' , 'visible' , $visible ) ;
$visible_checkbox->addOption( 1 , _TC_VISIBLE ) ;
$option_tray->addElement( $visible_checkbox ) ;
// submenu
$submenu_checkbox = new XoopsFormCheckBox( '' , 'submenu', $submenu ) ;
$submenu_checkbox->addOption( 1 , _TC_SUBMENU ) ;
$option_tray->addElement( $submenu_checkbox ) ;
// comments
$comments_checkbox = new XoopsFormCheckBox( '' , 'comments' , ! $nocomments ) ;
$comments_checkbox->addOption( 1 , _TC_ENABLECOM ) ;
$option_tray->addElement( $comments_checkbox ) ;
$form->addElement( $option_tray ) ;
// end of options
// content type
$htmltype_select = new XoopsFormSelect( _TC_CONTENT_TYPE , 'nohtml' , $nohtml ) ;
$htmltype_select->addOption( 0 , _TC_TYPE_HTML ) ;
$htmltype_select->addOption( 2 , _TC_TYPE_HTMLNOBB ) ;
$htmltype_select->addOption( 1 , _TC_TYPE_TEXTWITHBB ) ;
$htmltype_select->addOption( 3 , _TC_TYPE_TEXTNOBB ) ;
$htmltype_select->addOption( 8 , _TC_TYPE_PHPHTML ) ;
$htmltype_select->addOption( 10 , _TC_TYPE_PHPWITHBB ) ;
$htmltype_select->addOption( 16 , _TC_TYPE_PEARWIKI ) ;
$htmltype_select->addOption( 18 , _TC_TYPE_PEARWIKIWITHBB ) ;
$form->addElement( $htmltype_select ) ;
// last_modified
$lm_tray = new XoopsFormElementTray( _TC_LASTMODIFIED , ' ' ) ;
$lm_tray->addElement( new XoopsFormLabel( '' , formatTimestamp( $last_modified ) ) ) ;
$lm_checkbox = new XoopsFormCheckBox( '' , 'dont_update_last_modified' , 0 ) ;
$lm_checkbox->addOption( 1 , _TC_DONTUPDATELASTMODIFIED ) ;
$lm_tray->addElement( $lm_checkbox ) ;
$form->addElement( $lm_tray ) ;
// created
$form->addElement( new XoopsFormLabel( _TC_CREATED , formatTimestamp( $created ) ) ) ;
// buttons
$submit_tray = new XoopsFormElementTray( '' , ' ' ) ;
$submit_tray->addElement( new XoopsFormButton( "" , "preview" , _PREVIEW , "submit" ) );
$submit_tray->addElement( new XoopsFormButton( "" , "submit" , _SUBMIT , "submit" ) );
if( $op == 'edit' ) $submit_tray->addElement( new XoopsFormButton( "" , "saveas" , _TC_SAVEAS , "submit" ) ) ;
$submit_tray->addElement( new XoopsFormButton( "" , "cancel" , _CANCEL , "submit" ) );
$form->addElement( $submit_tray ) ;
// hiddens
$form->addElement( new XoopsFormHidden( 'op' , $next_op ) ) ;
$form->addElement( new XoopsFormHidden( 'id' , $storyid ) ) ;
$form->addElement( new XoopsFormHidden( 'last_modified' , $last_modified ) ) ;
// Ticket
$GLOBALS['xoopsGTicket']->addTicketXoopsFormElement( $form , __LINE__ ) ;
/* echo '
' ;*/
// end of xoopsForm
$form->display() ;
xoops_cp_footer() ;
// preview popup
if( ! empty( $_POST['preview'] ) ) {
// Ticket Check
if ( ! $xoopsGTicket->check() ) {
redirect_header(XOOPS_URL.'/',3,$xoopsGTicket->getErrors());
}
echo '
';
}
break ;
// ------------------------------------------------------------------------- //
// INSERT or UPDATE content to database //
// ------------------------------------------------------------------------- //
case "add" :
case "editit":
// Ticket Check
if ( ! $xoopsGTicket->check() ) {
redirect_header(XOOPS_URL.'/',3,$xoopsGTicket->getErrors());
}
$title4save = $myts->addSlashes( $_POST['title'] ) ;
$html_header4save = $myts->addSlashes( $_POST['html_header'] ) ;
$text4save = $myts->addSlashes( $_POST['message'] ) ;
$visible = empty( $_POST['visible'] ) ? 0 : 1 ;
$nohtml = empty( $_POST['nohtml'] ) ? 0 : intval( $_POST['nohtml'] ) ;
$nosmiley = empty( $_POST['nosmiley'] ) ? 0 : 1 ;
$nobreaks = empty( $_POST['nobreaks'] ) ? 0 : 1 ;
$nocomments = empty( $_POST['comments'] ) ? 1 : 0 ;
$submenu = empty( $_POST['submenu'] ) ? 0 : 1 ;
// hp flag is set if there are no records which has flag of homepage
$result = $xoopsDB->query( "SELECT COUNT(*) FROM $mytablename WHERE homepage>0" ) ;
list( $count_home ) = $xoopsDB->fetchRow( $result ) ;
$hp_flag = $count_home > 0 ? 0 : 1 ;
$sql_set = "SET title='$title4save',text='$text4save',visible='$visible',nohtml='$nohtml',nosmiley='$nosmiley',nobreaks='$nobreaks',nocomments='$nocomments',link='0',submenu='$submenu',html_header='$html_header4save'" ;
if( $op == 'add' || ! empty( $_POST['saveas'] ) ) {
$sql = "INSERT INTO $mytablename $sql_set,created=NOW(),homepage='$hp_flag'" ;
} else {
// not to update last_modified
if( ! empty( $_POST['dont_update_last_modified'] ) ) $sql_set .= ",last_modified=last_modified" ;
// change homepage only when it should be turned on
if( $hp_flag ) $sql_set .= ",homepage='$hp_flag'" ;
$id = empty( $_POST['id'] ) ? 0 : intval( $_POST['id'] ) ;
$sql = "UPDATE $mytablename $sql_set WHERE storyid='$id'" ;
}
$result = $xoopsDB->query( $sql ) or die ( _TC_ERRORINSERT ) ;
redirect_header( "index.php?op=show" , 1 , _TC_DBUPDATED ) ;
exit ;
break ;
// ------------------------------------------------------------------------- //
// Show new link & edit link Page //
// ------------------------------------------------------------------------- //
case "nlink" :
case "elink" :
xoops_cp_header();
include( dirname(__FILE__).'/mymenu.php' ) ;
echo "".$xoopsModule->getVar('name')."
";
if( is_writable( $wrap_path ) ) {
// Upload File
echo "";
// Delete File
$form = new XoopsThemeForm( _TC_DELFILE , "DelForm" , "index.php" ) ;
$address_select = new XoopsFormSelect( _TC_URL , "address" ) ;
$dir_handle = dir( $wrap_path ) ;
while( $file = $dir_handle->read() ) {
if( is_file( "$wrap_path/$file" ) && $file != 'index.php' ) {
$address_select->addOption( $file , htmlspecialchars( $file , ENT_QUOTES ) ) ;
}
}
$dir_handle->close() ;
$form->addElement( $address_select ) ;
$form->addElement( new XoopsFormHidden( 'op' , 'delfile' ) ) ;
$form->addElement( new XoopsFormButton( '' , "submit" , _TC_DELETE , 'submit' ) ) ;
$form->display();
} else {
echo "" . sprintf( _TC_FMT_WRAPPATHPERMOFF , $wrap_path ) . "
" ;
}
// initialization
if( $op == 'elink' ) {
$result = $xoopsDB->query( "SELECT storyid,title,visible,nocomments,address,submenu,link,UNIX_TIMESTAMP(last_modified) FROM $mytablename WHERE storyid='$id'" ) ;
list($storyid,$title,$visible,$nocomments,$address,$submenu,$link,$last_modified) = $xoopsDB->fetchRow( $result ) ;
$form_name = _TC_EDITLINK ;
$next_op = 'linkeditit' ;
} else {
list($storyid,$title,$visible,$nocomments,$address,$submenu,$link,$last_modified) = array(0,'',1,0,'',1,1,0) ;
$form_name = _TC_ADDLINK ;
$next_op = 'addlink' ;
}
// beggining of xoopsForm for PageWrapping
$form = new XoopsThemeForm( $form_name , "MainForm" , "index.php" ) ;
// title
$form->addElement( new XoopsFormText( _TC_LINKNAME , "title" , 50 , 255 , htmlspecialchars( $title , ENT_QUOTES ) ) ) ;
// a file should be wrapped
$address_select = new XoopsFormSelect( _TC_URL , "address" , $address ) ;
$dir_handle = dir( $wrap_path ) ;
while( $file = $dir_handle->read() ) {
if( is_file( "$wrap_path/$file" ) && $file != 'index.php' ) {
$address_select->addOption( $file , htmlspecialchars( $file , ENT_QUOTES ) ) ;
}
}
$dir_handle->close();
$form->addElement( $address_select ) ;
// base path for wrapping
$wraproot_radio = new XoopsFormRadio( _TC_WRAPROOT , 'wraproot', $link ) ;
$wraproot_radio->addOption( TC_WRAPTYPE_NORMAL , sprintf( _TC_FMT_WRAPROOTTC , $mymodpath ) ) ;
$wraproot_radio->addOption( TC_WRAPTYPE_CONTENTBASE , sprintf( _TC_FMT_WRAPROOTPAGE , $wrap_path ) ) ;
$wraproot_radio->addOption( TC_WRAPTYPE_USEREWRITE , sprintf( _TC_FMT_WRAPBYREWRITE , $wrap_path ) ) ;
$wraproot_radio->addOption( TC_WRAPTYPE_CHANGESRCHREF , sprintf( _TC_FMT_WRAPCHANGESRCHREF , $wrap_path ) ) ;
$form->addElement( $wraproot_radio ) ;
// options
$option_tray = new XoopsFormElementTray( _OPTIONS , '
' ) ;
// visible
$visible_checkbox = new XoopsFormCheckBox( '' , 'visible' , $visible ) ;
$visible_checkbox->addOption( 1 , _TC_VISIBLE ) ;
$option_tray->addElement( $visible_checkbox ) ;
// submenu
$submenu_checkbox = new XoopsFormCheckBox( '' , 'submenu', $submenu ) ;
$submenu_checkbox->addOption( 1 , _TC_SUBMENU ) ;
$option_tray->addElement( $submenu_checkbox ) ;
// comments
$comments_checkbox = new XoopsFormCheckBox( '' , 'comments' , ! $nocomments ) ;
$comments_checkbox->addOption( 1 , _TC_ENABLECOM ) ;
$option_tray->addElement( $comments_checkbox ) ;
$form->addElement( $option_tray ) ;
// end of options
// last_modified
$lm_tray = new XoopsFormElementTray( _TC_LASTMODIFIED , ' ' ) ;
$lm_tray->addElement( new XoopsFormLabel( '' , formatTimestamp( $last_modified ) ) ) ;
$lm_checkbox = new XoopsFormCheckBox( '' , 'dont_update_last_modified' , 0 ) ;
$lm_checkbox->addOption( 1 , _TC_DONTUPDATELASTMODIFIED ) ;
$lm_tray->addElement( $lm_checkbox ) ;
$form->addElement( $lm_tray ) ;
// buttons
$submit_tray = new XoopsFormElementTray( '' , ' ' ) ;
$submit_tray->addElement( new XoopsFormButton( "" , "submit" , _SUBMIT , "submit" ) );
$submit_tray->addElement( new XoopsFormButton( "" , "cancel" , _CANCEL , "submit" ) );
$form->addElement( $submit_tray ) ;
// hiddens
$form->addElement( new XoopsFormHidden( 'op' , $next_op ) ) ;
$form->addElement( new XoopsFormHidden( 'id' , $storyid ) ) ;
$form->addElement( new XoopsFormHidden( 'last_modified' , $last_modified ) ) ;
// Ticket
$GLOBALS['xoopsGTicket']->addTicketXoopsFormElement( $form , __LINE__ ) ;
// end of xoopsForm
$form->display() ;
xoops_cp_footer() ;
break ;
// ------------------------------------------------------------------------- //
// INSERT or UPDATE a PageWrap to database //
// ------------------------------------------------------------------------- //
case "addlink" :
case "linkeditit" :
// Ticket Check
if ( ! $xoopsGTicket->check() ) {
redirect_header(XOOPS_URL.'/',3,$xoopsGTicket->getErrors());
}
// security fix (thx JM2)
$_POST['address'] = str_replace( '..' , '' , $_POST['address'] ) ;
$title4save = $myts->addSlashes( $_POST['title'] ) ;
$address4save = $myts->addSlashes( $_POST['address'] ) ;
$visible = empty( $_POST['visible'] ) ? 0 : 1 ;
$nocomments = empty( $_POST['comments'] ) ? 1 : 0 ;
$submenu = empty( $_POST['submenu'] ) ? 0 : 1 ;
$link = empty( $_POST['wraproot'] ) ? 1 : intval( $_POST['wraproot'] ) ;
// hp flag is set if there are no records which has flag of homepage
$result = $xoopsDB->query( "SELECT COUNT(*) FROM $mytablename WHERE homepage>0" ) ;
list( $count_home ) = $xoopsDB->fetchRow( $result ) ;
$hp_flag = $count_home > 0 ? 0 : 1 ;
// fetch text for search from wrapped page
$wrapped_file = "$wrap_path/{$_POST['address']}" ;
$ext = strtolower( substr( strrchr( $wrapped_file , '.' ) , 1 ) ) ;
if( in_array( $ext , $page_wrap_search_allowed_exts ) ) {
$fp = fopen( $wrapped_file , 'r' ) ;
if( ! $fp ) {
redirect_header( "index.php?op=nlink" , 2 , _TC_FILENOTFOUND ) ;
exit ;
}
$text = addslashes( tc_convert_wrap_to_ie( strip_tags( fread( $fp , 65536 * 2 ) ) ) ) ;
fclose( $fp ) ;
} else {
$text = '' ;
}
$sql_set = "SET title='$title4save',address='$address4save',visible='$visible',nocomments='$nocomments',submenu='$submenu',link='$link',text='$text',nohtml='0',nosmiley='0',nobreaks='0'" ;
if( $op == 'addlink' ) {
$sql = "INSERT INTO $mytablename $sql_set,created=NOW(),homepage='$hp_flag'" ;
} else {
// not to update last_modified
if( ! empty( $_POST['dont_update_last_modified'] ) ) $sql_set .= ",last_modified=last_modified" ;
// change homepage only when it should be turned on
if( $hp_flag ) $sql_set .= ",homepage='$hp_flag'" ;
$id = empty( $_POST['id'] ) ? 0 : intval( $_POST['id'] ) ;
$sql = "UPDATE $mytablename $sql_set WHERE storyid='$id'" ;
}
$result = $xoopsDB->query( $sql ) or die ( _TC_ERRORINSERT ) ;
redirect_header( "index.php?op=show" , 2 , _TC_DBUPDATED ) ;
exit ;
break;
// ------------------------------------------------------------------------- //
// Upload File //
// ------------------------------------------------------------------------- //
case "update_wrap_contents" :
$result = $xoopsDB->query( "SELECT storyid,link,address FROM $mytablename WHERE link>0" ) ;
while( list( $id , $link , $address ) = $xoopsDB->fetchRow( $result ) ) {
if( stristr( $address , '..' ) ) exit ;
$wrapped_file = $wrap_path.'/'.$address ;
$ext = strtolower( substr( strrchr( $wrapped_file , '.' ) , 1 ) ) ;
if( in_array( $ext , $page_wrap_search_allowed_exts ) ) {
$fp = fopen( $wrapped_file , 'r' ) ;
if( ! $fp ) {
continue ;
}
$text4sql = addslashes( tc_convert_wrap_to_ie( strip_tags( fread( $fp , 65536 * 2 ) ) ) ) ;
fclose( $fp ) ;
} else {
$text4sql = '' ;
}
$xoopsDB->queryF( "UPDATE $mytablename SET text='$text4sql' WHERE storyid=".intval($id) ) ;
}
redirect_header( "index.php?op=show" , 2 , _TC_DBUPDATED ) ;
exit ;
break ;
// ------------------------------------------------------------------------- //
// Upload File //
// ------------------------------------------------------------------------- //
case "upload" :
// Ticket Check
if ( ! $xoopsGTicket->check() ) {
redirect_header(XOOPS_URL.'/',3,$xoopsGTicket->getErrors());
}
$source = $_FILES['fileupload']['tmp_name'] ;
$fileupload_name = $_FILES['fileupload']['name'] ;
if( $source != 'none' && $source != '' ) {
$dest = "$wrap_path/$fileupload_name" ;
if( file_exists( $dest ) ) {
redirect_header( "index.php?op=nlink" , 5 , _TC_ERROREXIST ) ;
exit ;
} else {
if( copy( $source , $dest ) ) {
redirect_header( "index.php?op=nlink" , 2 , _TC_UPLOADED ) ;
exit ;
} else {
redirect_header( "index.php?op=nlink" , 5 , _TC_ERRORUPL ) ;
exit ;
}
unlink( $source ) ;
}
}
break;
// ------------------------------------------------------------------------- //
// Delete File - Confirmation Question //
// ------------------------------------------------------------------------- //
case "delfile" :
xoops_cp_header() ;
include( dirname(__FILE__).'/mymenu.php' ) ;
// security fix (thx JM2)
$_POST['address'] = str_replace( '..' , '' , $_POST['address'] ) ;
xoops_confirm( array( 'address' => $_POST['address'] , 'op' => 'delfileok' ) + $xoopsGTicket->getTicketArray( __LINE__ ) , 'index.php' , _TC_RUSUREDELF , _YES ) ;
xoops_cp_footer() ;
break ;
// ------------------------------------------------------------------------- //
// Delete it definitely //
// ------------------------------------------------------------------------- //
case "delfileok" :
// Ticket Check
if ( ! $xoopsGTicket->check() ) {
redirect_header(XOOPS_URL.'/',3,$xoopsGTicket->getErrors());
}
// security fix (thx JM2)
$_POST['address'] = str_replace( '..' , '' , $_POST['address'] ) ;
unlink( "$wrap_path/{$_POST['address']}" ) ;
redirect_header( "index.php?op=nlink" , 2 , _TC_FDELETED ) ;
exit ;
break ;
// ------------------------------------------------------------------------- //
// Delete Content - Confirmation Question //
// ------------------------------------------------------------------------- //
case "delete" :
xoops_cp_header() ;
include( dirname(__FILE__).'/mymenu.php' ) ;
xoops_confirm( array( 'id' => intval( $_GET['id'] ) , 'op' => 'deleteit' ) + $xoopsGTicket->getTicketArray( __LINE__ ) , 'index.php' , _TC_RUSUREDEL , _YES ) ;
xoops_cp_footer() ;
break ;
// ------------------------------------------------------------------------- //
// Delete it definitely //
// ------------------------------------------------------------------------- //
case "deleteit" :
// Ticket Check
if ( ! $xoopsGTicket->check() ) {
redirect_header(XOOPS_URL.'/',3,$xoopsGTicket->getErrors());
}
$id = empty( $_POST['id'] ) ? 0 : intval( $_POST['id'] ) ;
$result = $xoopsDB->query( "DELETE FROM $mytablename WHERE storyid='$id'" ) ;
xoops_comment_delete( $xoopsModule->getVar( 'mid' ) , $id ) ;
redirect_header( "index.php?op=show" , 1 , _TC_DBUPDATED ) ;
exit ;
break ;
// ------------------------------------------------------------------------- //
// Export to the other TinyD
// ------------------------------------------------------------------------- //
case "moveto" :
// Ticket Check
if ( ! $xoopsGTicket->check() ) {
redirect_header(XOOPS_URL.'/',3,$xoopsGTicket->getErrors());
}
$destModule = $module_handler->get( intval( $_POST['dest_tinyd'] ) ) ;
// error check
if( empty( $_POST['checked_ids'] ) || ! is_object( $destModule ) ) {
redirect_header( "index.php?op=show" , 1 , _TC_DBUPDATED ) ;
exit ;
}
$dest_dirname = $destModule->getVar( 'dirname' ) ;
if( ! preg_match( '/^(\D+)(\d*)$/' , $dest_dirname , $regs ) ) echo ( "invalid dirname: " . htmlspecialchars( $dest_dirname ) ) ;
$dest_dirnumber = $regs[2] === '' ? '' : intval( $regs[2] ) ;
$dest_tablename = $xoopsDB->prefix( "tinycontent{$dest_dirnumber}" ) ;
$src_mid = $xoopsModule->getVar( 'mid' ) ;
$dest_mid = $destModule->getVar( 'mid' ) ;
// authority check
if( ! $xoopsUser->isAdmin( $dest_mid ) ) {
redirect_header( XOOPS_URL.'/' , 1 , _NOPERM ) ;
exit ;
}
foreach( $_POST['checked_ids'] as $src_id => $val ) {
if( ! $val ) continue ;
$rs = $xoopsDB->query( "SELECT * FROM $mytablename WHERE storyid='".intval($src_id)."'" ) ;
if( ! ( $rows = $xoopsDB->fetchArray( $rs ) ) ) continue ;
$set_sql = '' ;
foreach( $rows as $colname => $colval ) {
if( $colname == 'storyid' || $colname == 'homepage' ) continue ;
$set_sql .= "$colname='".addslashes($colval)."'," ;
}
$set_sql = substr( $set_sql , 0 , -1 ) ;
$ins_rs = $xoopsDB->query( "INSERT INTO $dest_tablename SET $set_sql" ) ;
$dest_id = $xoopsDB->getInsertId() ;
if( ! $ins_rs || $dest_id <= 0 ) {
redirect_header( "index.php?op=show" , 5 , 'The target module should be updated' ) ;
exit ;
}
// delete the record
$del_rs = $xoopsDB->query( "DELETE FROM $mytablename WHERE storyid='".intval($src_id)."'" ) ;
// moving comments
$sql = "UPDATE ".$xoopsDB->prefix('xoopscomments')." SET com_modid='$dest_mid',com_itemid='$dest_id' WHERE com_modid='$src_mid' AND com_itemid='$src_id'" ;
$xoopsDB->query( $sql ) ;
}
redirect_header( "index.php?op=show" , 1 , _TC_DBUPDATED ) ;
exit ;
break ;
}
// checks browser compatibility with the control
function check_browser_can_use_spaw() {
return true ; // for nobunobu's spaw 2005-5-10
$browser = $_SERVER['HTTP_USER_AGENT'] ;
// check if msie
if( eregi( "MSIE[^;]*" , $browser , $msie ) ) {
// get version
if( eregi( "[0-9]+\.[0-9]+" , $msie[0] , $version ) ) {
// check version
if( (float)$version[0] >= 5.5 ) {
// finally check if it's not opera impersonating ie
if( ! eregi( "opera" , $browser ) ) {
return true ;
}
}
}
}
return false ;
}
?>