getPath( 'admin_html' ) );
$sectionid = mosGetParam( $_REQUEST, 'sectionid', 0 );
$id = mosGetParam( $_REQUEST, 'id', '' );
$cid = mosGetParam( $_POST, 'cid', array(0) );
if (!is_array( $cid )) {
$cid = array(0);
}
switch ($task) {
case 'clean_cache':
mosCache::cleanCache( 'com_content' );
mosRedirect( 'index2.php', 'Cache cleaned' );
break;
case 'new':
editContent( 0, $sectionid, $option );
break;
case 'edit':
editContent( $id, $sectionid, $option );
break;
case 'editA':
editContent( $cid[0], '', $option );
break;
case 'go2menu':
case 'go2menuitem':
case 'resethits':
case 'menulink':
case 'apply':
case 'save':
mosCache::cleanCache( 'com_content' );
saveContent( $sectionid, $task );
break;
case 'remove':
removeContent( $cid, $sectionid, $option );
break;
case 'publish':
changeContent( $cid, 1, $option );
break;
case 'unpublish':
changeContent( $cid, 0, $option );
break;
case 'toggle_frontpage':
toggleFrontPage( $cid, $sectionid, $option );
break;
case 'archive':
changeContent( $cid, -1, $option );
break;
case 'unarchive':
changeContent( $cid, 0, $option );
break;
case 'cancel':
cancelContent();
break;
case 'orderup':
orderContent( $cid[0], -1, $option );
break;
case 'orderdown':
orderContent( $cid[0], 1, $option );
break;
case 'showarchive':
viewArchive( $sectionid, $option );
break;
case 'movesect':
moveSection( $cid, $sectionid, $option );
break;
case 'movesectsave':
moveSectionSave( $cid, $sectionid, $option );
break;
case 'copy':
copyItem( $cid, $sectionid, $option );
break;
case 'copysave':
copyItemSave( $cid, $sectionid, $option );
break;
case 'accesspublic':
accessMenu( $cid[0], 0, $option );
break;
case 'accessregistered':
accessMenu( $cid[0], 1, $option );
break;
case 'accessspecial':
accessMenu( $cid[0], 2, $option );
break;
case 'saveorder':
saveOrder( $cid );
break;
default:
viewContent( $sectionid, $option );
break;
}
/**
* Compiles a list of installed or defined modules
* @param database A database connector object
*/
function viewContent( $sectionid, $option ) {
global $database, $mainframe, $mosConfig_list_limit;
$catid = $mainframe->getUserStateFromRequest( "catid{$option}{$sectionid}", 'catid', 0 );
$filter_authorid = $mainframe->getUserStateFromRequest( "filter_authorid{$option}{$sectionid}", 'filter_authorid', 0 );
$filter_sectionid = $mainframe->getUserStateFromRequest( "filter_sectionid{$option}{$sectionid}", 'filter_sectionid', 0 );
$limit = $mainframe->getUserStateFromRequest( "viewlistlimit", 'limit', $mosConfig_list_limit );
$limitstart = $mainframe->getUserStateFromRequest( "view{$option}{$sectionid}limitstart", 'limitstart', 0 );
$search = $mainframe->getUserStateFromRequest( "search{$option}{$sectionid}", 'search', '' );
$search = $database->getEscaped( trim( strtolower( $search ) ) );
$redirect = $sectionid;
$filter = ''; //getting a undefined variable error
if ( $sectionid == 0 ) {
// used to show All content items
$where = array(
"c.state >= 0",
"c.catid=cc.id",
"cc.section=s.id",
"s.scope='content'",
);
$order = "\n ORDER BY s.title, c.catid, cc.ordering, cc.title, c.ordering";
$all = 1;
//$filter = "\n , #__sections AS s WHERE s.id = c.section";
if ($filter_sectionid > 0) {
$filter = "\nWHERE cc.section=$filter_sectionid";
}
$section->title = 'All Content Items';
$section->id = 0;
} else {
$where = array(
"c.state >= 0",
"c.catid=cc.id",
"cc.section=s.id",
"s.scope='content'",
"c.sectionid='$sectionid'"
);
$order = "\n ORDER BY cc.ordering, cc.title, c.ordering";
$all = NULL;
$filter = "\n WHERE cc.section = '$sectionid'";
$section = new mosSection( $database );
$section->load( $sectionid );
}
// used by filter
if ( $filter_sectionid > 0 ) {
$where[] = "c.sectionid = '$filter_sectionid'";
}
if ( $catid > 0 ) {
$where[] = "c.catid = '$catid'";
}
if ( $filter_authorid > 0 ) {
$where[] = "c.created_by = '$filter_authorid'";
}
if ( $search ) {
$where[] = "LOWER( c.title ) LIKE '%$search%'";
}
// get the total number of records
$database->setQuery( "SELECT count(*) FROM #__content AS c, #__categories AS cc, #__sections AS s"
. (count( $where ) ? "\nWHERE " . implode( ' AND ', $where ) : "")
);
$total = $database->loadResult();
require_once( $GLOBALS['mosConfig_absolute_path'] . '/administrator/includes/pageNavigation.php' );
$pageNav = new mosPageNav( $total, $limitstart, $limit );
$query = "SELECT c.*, g.name AS groupname, cc.name, u.name AS editor, f.content_id AS frontpage, s.title AS section_name, v.name AS author"
. "\n FROM #__categories AS cc, #__sections AS s, #__content AS c "
. "\n LEFT JOIN #__groups AS g ON g.id = c.access"
. "\n LEFT JOIN #__users AS u ON u.id = c.checked_out"
. "\n LEFT JOIN #__users AS v ON v.id = c.created_by"
. "\n LEFT JOIN #__content_frontpage AS f ON f.content_id = c.id"
. ( count( $where ) ? "\nWHERE " . implode( ' AND ', $where ) : '' )
. $order
. "\n LIMIT $pageNav->limitstart,$pageNav->limit"
;
$database->setQuery( $query );
$rows = $database->loadObjectList();
if ($database->getErrorNum()) {
echo $database->stderr();
return false;
}
// get list of categories for dropdown filter
$query = "SELECT cc.id AS value, cc.title AS text, section"
. "\n FROM #__categories AS cc"
. "\n INNER JOIN #__sections AS s ON s.id=cc.section "
. $filter
. "\n ORDER BY s.ordering, cc.ordering"
;
$lists['catid'] = filterCategory( $query, $catid );
// get list of sections for dropdown filter
$javascript = 'onchange="document.adminForm.submit();"';
$lists['sectionid'] = mosAdminMenus::SelectSection( 'filter_sectionid', $filter_sectionid, $javascript );
// get list of Authors for dropdown filter
$query = "SELECT c.created_by AS value, u.name AS text"
. "\n FROM #__content AS c"
. "\n INNER JOIN #__sections AS s ON s.id = c.sectionid"
. "\n LEFT JOIN #__users AS u ON u.id = c.created_by"
. "\n WHERE c.state <> '-1'"
. "\n AND c.state <> '-2'"
. "\n GROUP BY u.name"
. "\n ORDER BY u.name"
;
$authors[] = mosHTML::makeOption( '0', _SEL_AUTHOR );
$database->setQuery( $query );
$authors = array_merge( $authors, $database->loadObjectList() );
$lists['authorid'] = mosHTML::selectList( $authors, 'filter_authorid', 'class="inputbox" size="1" onchange="document.adminForm.submit( );"', 'value', 'text', $filter_authorid );
HTML_content::showContent( $rows, $section, $lists, $search, $pageNav, $all, $redirect );
}
/**
* Shows a list of archived content items
* @param int The section id
*/
function viewArchive( $sectionid, $option ) {
global $database, $mainframe, $mosConfig_list_limit;
$catid = $mainframe->getUserStateFromRequest( "catidarc{$option}{$sectionid}", 'catid', 0 );
$limit = $mainframe->getUserStateFromRequest( "viewlistlimit", 'limit', $mosConfig_list_limit );
$limitstart = $mainframe->getUserStateFromRequest( "viewarc{$option}{$sectionid}limitstart", 'limitstart', 0 );
$search = $mainframe->getUserStateFromRequest( "searcharc{$option}{$sectionid}", 'search', '' );
$filter_authorid = $mainframe->getUserStateFromRequest( "filter_authorid{$option}{$sectionid}", 'filter_authorid', 0 );
$filter_sectionid = $mainframe->getUserStateFromRequest( "filter_sectionid{$option}{$sectionid}", 'filter_sectionid', 0 );
$search = $database->getEscaped( trim( strtolower( $search ) ) );
$redirect = $sectionid;
if ( $sectionid == 0 ) {
$where = array(
"c.state = -1",
"c.catid=cc.id",
"cc.section=s.id",
"s.scope='content'"
);
$filter = "\n , #__sections AS s WHERE s.id = c.section";
$all = 1;
} else {
$where = array(
"c.state = -1",
"c.catid=cc.id",
"cc.section=s.id",
"s.scope='content'",
"c.sectionid='$sectionid'"
);
$filter = "\n WHERE section = '$sectionid'";
$all = NULL;
}
// used by filter
if ( $filter_sectionid > 0 ) {
$where[] = "c.sectionid = '$filter_sectionid'";
}
if ( $filter_authorid > 0 ) {
$where[] = "c.created_by = '$filter_authorid'";
}
if ($catid > 0) {
$where[] = "c.catid='$catid'";
}
if ($search) {
$where[] = "LOWER(c.title) LIKE '%$search%'";
}
// get the total number of records
$query = "SELECT count(*)"
. "FROM #__content AS c, #__categories AS cc, #__sections AS s"
. ( count( $where ) ? "\n WHERE " . implode( ' AND ', $where ) : '' )
;
$database->setQuery( $query );
$total = $database->loadResult();
require_once( $GLOBALS['mosConfig_absolute_path'] . '/administrator/includes/pageNavigation.php' );
$pageNav = new mosPageNav( $total, $limitstart, $limit );
$query = "SELECT c.*, g.name AS groupname, cc.name, v.name AS author"
. "\n FROM #__categories AS cc, #__sections AS s, #__content AS c "
. "\n LEFT JOIN #__groups AS g ON g.id = c.access"
. "\n LEFT JOIN #__users AS v ON v.id = c.created_by"
. ( count( $where ) ? "\nWHERE " . implode( ' AND ', $where ) : '' )
. "\n ORDER BY c.catid, c.ordering"
. "\n LIMIT $pageNav->limitstart,$pageNav->limit"
;
$database->setQuery( $query );
$rows = $database->loadObjectList();
if ($database->getErrorNum()) {
echo $database->stderr();
return;
}
// get list of categories for dropdown filter
$query = "SELECT c.id AS value, c.title AS text"
. "\n FROM #__categories AS c"
. $filter
. "\n ORDER BY c.ordering"
;
$lists['catid'] = filterCategory( $query, $catid );
// get list of sections for dropdown filter
$javascript = 'onchange="document.adminForm.submit();"';
$lists['sectionid'] = mosAdminMenus::SelectSection( 'filter_sectionid', $filter_sectionid, $javascript );
$section = new mosSection( $database );
$section->load( $sectionid );
// get list of Authors for dropdown filter
$query = "SELECT c.created_by AS value, u.name AS text"
. "\n FROM #__content AS c"
. "\n INNER JOIN #__sections AS s ON s.id = c.sectionid"
. "\n LEFT JOIN #__users AS u ON u.id = c.created_by"
. "\n WHERE c.state = '-1'"
. "\n GROUP BY u.name"
. "\n ORDER BY u.name"
;
$authors[] = mosHTML::makeOption( '0', _SEL_AUTHOR );
$database->setQuery( $query );
$authors = array_merge( $authors, $database->loadObjectList() );
$lists['authorid'] = mosHTML::selectList( $authors, 'filter_authorid', 'class="inputbox" size="1" onchange="document.adminForm.submit( );"', 'value', 'text', $filter_authorid );
HTML_content::showArchive( $rows, $section, $lists, $search, $pageNav, $option, $all, $redirect );
}
/**
* Compiles information to add or edit the record
* @param database A database connector object
* @param integer The unique id of the record to edit (0 if new)
* @param integer The id of the content section
*/
function editContent( $uid=0, $sectionid=0, $option ) {
global $database, $my, $mainframe;
global $mosConfig_absolute_path, $mosConfig_live_site, $mosConfig_offset;
$redirect = mosGetParam( $_POST, 'redirect', '' );
if ( !$redirect ) {
$redirect = $sectionid;
}
// load the row from the db table
$row = new mosContent( $database );
$row->load( $uid );
if ($uid) {
$sectionid = $row->sectionid;
if ($row->state < 0) {
mosRedirect( 'index2.php?option=com_content§ionid='. $row->sectionid, 'You cannot edit an archived item' );
}
}
if ( $sectionid == 0 ) {
$where = "\n WHERE section NOT LIKE '%com_%'";
} else {
$where = "\n WHERE section='$sectionid'";
}
// get the type name - which is a special category
if ($row->sectionid){
$query = "SELECT name FROM #__sections WHERE id=$row->sectionid";
$database->setQuery( $query );
$section = $database->loadResult();
$contentSection = $section;
} else {
$query = "SELECT name FROM #__sections WHERE id=$sectionid";
$database->setQuery( $query );
$section = $database->loadResult();
$contentSection = $section;
}
// fail if checked out not by 'me'
if ($row->checked_out && $row->checked_out <> $my->id) {
mosRedirect( 'index2.php?option=com_content', 'The module '. $row->title .' is currently being edited by another administrator' );
}
if ($uid) {
$row->checkout( $my->id );
if (trim( $row->images )) {
$row->images = explode( "\n", $row->images );
} else {
$row->images = array();
}
$row->created = mosFormatDate( $row->created, '%Y-%m-%d %H:%M:%S' );
$row->modified = mosFormatDate( $row->modified, '%Y-%m-%d %H:%M:%S' );
$row->publish_up = mosFormatDate( $row->publish_up, '%Y-%m-%d %H:%M:%S' );
if (trim( $row->publish_down ) == '0000-00-00 00:00:00') {
$row->publish_down = 'Never';
}
$query = "SELECT name from #__users"
. "\n WHERE id=$row->created_by"
;
$database->setQuery( $query );
$row->creator = $database->loadResult();
$query = "SELECT name from #__users"
. "\n WHERE id=$row->modified_by"
;
$database->setQuery( $query );
$row->modifier = $database->loadResult();
$query = "SELECT content_id from #__content_frontpage"
. "\n WHERE content_id=$row->id"
;
$database->setQuery( $query );
$row->frontpage = $database->loadResult();
// get list of links to this item
$and = "\n AND componentid = ". $row->id;
$menus = mosAdminMenus::Links2Menu( 'content_item_link', $and );
} else {
$row->sectionid = $sectionid;
$row->version = 0;
$row->state = 1;
$row->ordering = 0;
$row->images = array();
//$row->publish_up = date( 'Y-m-d', time() );
$row->publish_up = date( 'Y-m-d', time() + $mosConfig_offset * 60 * 60 );
$row->publish_down = 'Never';
$row->catid = NULL;
$row->creator = '';
$row->modifier = '';
$row->frontpage = 0;
$menus = array();
}
$javascript = "onchange=\"changeDynaList( 'catid', sectioncategories, document.adminForm.sectionid.options[document.adminForm.sectionid.selectedIndex].value, 0, 0);\"";
$query = "SELECT s.id AS value, s.title AS text"
. "\n FROM #__sections AS s"
. "\n ORDER BY s.ordering";
$database->setQuery( $query );
if ( $sectionid == 0 ) {
$sections[] = mosHTML::makeOption( '-1', 'Select Section' );
$sections = array_merge( $sections, $database->loadObjectList() );
$lists['sectionid'] = mosHTML::selectList( $sections, 'sectionid', 'class="inputbox" size="1" '. $javascript, 'value', 'text' );
} else {
$intval = intval( $row->sectionid);
$dbLoadObjectList = $database->loadObjectList();
$lists['sectionid'] = mosHTML::selectList( $dbLoadObjectList, 'sectionid', 'class="inputbox" size="1" '. $javascript, 'value', 'text', $intval );
}
$sections = $database->loadObjectList();
$sectioncategories = array();
$sectioncategories[-1] = array();
$sectioncategories[-1][] = mosHTML::makeOption( '-1', 'Select Category' );
foreach($sections as $section) {
$sectioncategories[$section->value] = array();
$query = "SELECT id AS value, name AS text"
. "\n FROM #__categories"
. "\n WHERE section='$section->value'"
. "\n ORDER BY ordering";
$database->setQuery( $query );
$rows2 = $database->loadObjectList();
foreach($rows2 as $row2) {
$sectioncategories[$section->value][] = mosHTML::makeOption( $row2->value, $row2->text );
}
}
// get list of categories
if ( !$row->catid && !$row->sectionid ) {
$categories[] = mosHTML::makeOption( '-1', 'Select Category' );
$lists['catid'] = mosHTML::selectList( $categories, 'catid', 'class="inputbox" size="1"', 'value', 'text' );
} else {
$query = "SELECT id AS value, name AS text"
. "\n FROM #__categories"
. $where
. "\n ORDER BY ordering";
$database->setQuery( $query );
$categories[] = mosHTML::makeOption( '-1', 'Select Category' );
$categories = array_merge( $categories, $database->loadObjectList() );
$lists['catid'] = mosHTML::selectList( $categories, 'catid', 'class="inputbox" size="1"', 'value', 'text', intval( $row->catid ) );
}
// build the html select list for ordering
$query = "SELECT ordering AS value, title AS text"
. "\n FROM #__content"
. "\n WHERE catid='$row->catid'"
. "\n AND state >= 0"
. "\n ORDER BY ordering"
;
$lists['ordering'] = mosAdminMenus::SpecificOrdering( $row, $uid, $query, 1 );
// calls function to read image from directory
$pathA = $mosConfig_absolute_path .'/images/stories';
$pathL = $mosConfig_live_site .'/images/stories';
$images = array();
$folders = array();
$folders[] = mosHTML::makeOption( '/' );
mosAdminMenus::ReadImages( $pathA, '/', $folders, $images );
// list of folders in images/stories/
$lists['folders'] = mosAdminMenus::GetImageFolders( $folders, $pathL );
// list of images in specfic folder in images/stories/
$lists['imagefiles'] = mosAdminMenus::GetImages( $images, $pathL );
// list of saved images
$lists['imagelist'] = mosAdminMenus::GetSavedImages( $row, $pathL );
// build list of users
$active = ( intval( $row->created_by ) ? intval( $row->created_by ) : $my->id );
$lists['created_by'] = mosAdminMenus::UserSelect( 'created_by', $active );
// build the select list for the image position alignment
$lists['_align'] = mosAdminMenus::Positions( '_align' );
// build the select list for the image caption alignment
$lists['_caption_align'] = mosAdminMenus::Positions( '_caption_align' );
// build the html select list for the group access
$lists['access'] = mosAdminMenus::Access( $row );
// build the html select list for menu selection
$lists['menuselect'] = mosAdminMenus::MenuSelect( );
// build the select list for the image caption position
$pos[] = mosHTML::makeOption( 'bottom', _CMN_BOTTOM );
$pos[] = mosHTML::makeOption( 'top', _CMN_TOP );
$lists['_caption_position'] = mosHTML::selectList( $pos, '_caption_position', 'class="inputbox" size="1"', 'value', 'text' );
// get params definitions
$params =& new mosParameters( $row->attribs, $mainframe->getPath( 'com_xml', 'com_content' ), 'component' );
HTML_content::editContent( $row, $contentSection, $lists, $sectioncategories, $images, $params, $option, $redirect, $menus );
}
/**
* Saves the content item an edit form submit
* @param database A database connector object
*/
function saveContent( $sectionid, $task ) {
global $database, $my, $mainframe, $mosConfig_offset;
$menu = mosGetParam( $_POST, 'menu', 'mainmenu' );
$menuid = mosGetParam( $_POST, 'menuid', 0 );
$row = new mosContent( $database );
if (!$row->bind( $_POST )) {
echo "\n";
exit();
}
$isNew = ( $row->id < 1 );
if ($isNew) {
//$row->created = $row->created ? $row->created : date( "Y-m-d H:i:s" );
$row->created = $row->created ? mosFormatDate( $row->created, '%Y-%m-%d %H:%M:%S', -$mosConfig_offset * 60 * 60 ) : date( "Y-m-d H:i:s" );
$row->created_by = $row->created_by ? $row->created_by : $my->id;
} else {
$row->modified = date( "Y-m-d H:i:s" );
$row->modified_by = $my->id;
//$row->created = $row->created ? $row->created : date( "Y-m-d H:i:s" );
$row->created = $row->created ? mosFormatDate( $row->created, '%Y-%m-%d %H:%M:%S', -$mosConfig_offset ) : date( "Y-m-d H:i:s" );
$row->created_by = $row->created_by ? $row->created_by : $my->id;
}
if (strlen(trim( $row->publish_up )) <= 10) {
$row->publish_up .= " 00:00:00";
}
$row->publish_up = mosFormatDate($row->publish_up, '%Y-%m-%d %H:%M:%S', -$mosConfig_offset );
if (trim( $row->publish_down ) == "Never") {
$row->publish_down = "0000-00-00 00:00:00";
}
$row->state = mosGetParam( $_REQUEST, 'published', 0 );
$params = mosGetParam( $_POST, 'params', '' );
if (is_array( $params )) {
$txt = array();
foreach ( $params as $k=>$v) {
$txt[] = "$k=$v";
}
$row->attribs = implode( "\n", $txt );
}
// code cleaner for xhtml transitional compliance
$row->introtext = str_replace( '
', '
', $row->introtext );
$row->fulltext = str_replace( '
', '
', $row->fulltext );
// remove
take being automatically added to empty fulltext
$length = strlen( $row->fulltext ) < 9;
$search = strstr( $row->fulltext, '
');
if ( $length && $search ) {
$row->fulltext = NULL;
}
if (!$row->check()) {
echo "\n";
exit();
}
$row->version++;
if (!$row->store()) {
echo "\n";
exit();
}
// manage frontpage items
require_once( $mainframe->getPath( 'class', 'com_frontpage' ) );
$fp = new mosFrontPage( $database );
if (mosGetParam( $_REQUEST, 'frontpage', 0 )) {
// toggles go to first place
if (!$fp->load( $row->id )) {
// new entry
$database->setQuery( "INSERT INTO #__content_frontpage VALUES ('$row->id','1')" );
if (!$database->query()) {
echo "\n";
exit();
}
$fp->ordering = 1;
}
} else {
// no frontpage mask
if (!$fp->delete( $row->id )) {
$msg .= $fp->stderr();
}
$fp->ordering = 0;
}
$fp->updateOrder();
$row->checkin();
$row->updateOrder( "catid='$row->catid' AND state >= 0" );
$redirect = mosGetParam( $_POST, 'redirect', $sectionid );
switch ( $task ) {
case 'go2menu':
mosRedirect( 'index2.php?option=com_menus&menutype='. $menu );
break;
case 'go2menuitem':
mosRedirect( 'index2.php?option=com_menus&menutype='. $menu .'&task=edit&hidemainmenu=1&id='. $menuid );
break;
case 'menulink':
menuLink( $redirect, $row->id );
break;
case 'resethits':
resethits( $redirect, $row->id );
break;
case 'apply':
$msg = 'Successfully Saved changes to Item: '. $row->title;
mosRedirect( 'index2.php?option=com_content§ionid='. $redirect .'&task=edit&hidemainmenu=1&id='. $row->id, $msg );
case 'save':
default:
$msg = 'Successfully Saved Item: '. $row->title;
mosRedirect( 'index2.php?option=com_content§ionid='. $redirect, $msg );
break;
}
}
/**
* Changes the state of one or more content pages
* @param string The name of the category section
* @param integer A unique category id (passed from an edit form)
* @param array An array of unique category id numbers
* @param integer 0 if unpublishing, 1 if publishing
* @param string The name of the current user
*/
function changeContent( $cid=null, $state=0, $option ) {
global $database, $my;
if (count( $cid ) < 1) {
$action = $state == 1 ? 'publish' : ($state == -1 ? 'archive' : 'unpublish');
echo "\n";
exit;
}
$total = count ( $cid );
$cids = implode( ',', $cid );
$database->setQuery( "UPDATE #__content SET state='$state'"
. "\nWHERE id IN ($cids) AND (checked_out=0 OR (checked_out='".$my->id."'))"
);
if (!$database->query()) {
echo "\n";
exit();
}
if (count( $cid ) == 1) {
$row = new mosContent( $database );
$row->checkin( $cid[0] );
}
if ( $state == "-1" ) {
$msg = $total ." Item(s) successfully Archived";
} else if ( $state == "1" ) {
$msg = $total ." Item(s) successfully Published";
} else if ( $state == "0" ) {
$msg = $total ." Item(s) successfully Unpublished";
}
$redirect = mosGetParam( $_POST, 'redirect', $row->sectionid );
$task = mosGetParam( $_POST, 'returntask', '' );
if ( $task ) {
$task = '&task='. $task;
} else {
$task = '';
}
mosRedirect( 'index2.php?option='. $option . $task .'§ionid='. $redirect .'&mosmsg='. $msg );
}
/**
* Changes the state of one or more content pages
* @param string The name of the category section
* @param integer A unique category id (passed from an edit form)
* @param array An array of unique category id numbers
* @param integer 0 if unpublishing, 1 if publishing
* @param string The name of the current user
*/
function toggleFrontPage( $cid, $section, $option ) {
global $database, $my, $mainframe;
if (count( $cid ) < 1) {
echo "\n";
exit;
}
$msg = '';
require_once( $mainframe->getPath( 'class', 'com_frontpage' ) );
$fp = new mosFrontPage( $database );
foreach ($cid as $id) {
// toggles go to first place
if ($fp->load( $id )) {
if (!$fp->delete( $id )) {
$msg .= $fp->stderr();
}
$fp->ordering = 0;
} else {
// new entry
$database->setQuery( "INSERT INTO #__content_frontpage VALUES ('$id','0')" );
if (!$database->query()) {
echo "\n";
exit();
}
$fp->ordering = 0;
}
$fp->updateOrder();
}
mosRedirect( 'index2.php?option='. $option .'§ionid='. $section, $msg );
}
function removeContent( &$cid, $sectionid, $option ) {
global $database, $mainframe;
$total = count( $cid );
if ( $total < 1) {
echo "\n";
exit;
}
$state = '-2';
$ordering = '0';
//seperate contentids
$cids = implode( ',', $cid );
$query = "UPDATE #__content SET state = '". $state ."', ordering = '". $ordering ."'"
. "\n WHERE id IN ( ". $cids ." )"
;
$database->setQuery( $query );
if ( !$database->query() ) {
echo "\n";
exit();
}
$msg = $total ." Item(s) sent to the Trash";
$return = mosGetParam( $_POST, 'returntask', '' );
mosRedirect( 'index2.php?option='. $option .'&task='. $return .'§ionid='. $sectionid, $msg );
}
/**
* Cancels an edit operation
*/
function cancelContent( ) {
global $database;
$row = new mosContent( $database );
$row->bind( $_POST );
$row->checkin();
$redirect = mosGetParam( $_POST, 'redirect', 0 );
mosRedirect( 'index2.php?option=com_content§ionid='. $redirect );
}
/**
* Moves the order of a record
* @param integer The increment to reorder by
*/
function orderContent( $uid, $inc, $option ) {
global $database;
$row = new mosContent( $database );
$row->load( $uid );
$row->move( $inc, "catid='$row->catid' AND state >= 0" );
$redirect = mosGetParam( $_POST, 'redirect', $row->sectionid );
mosRedirect( 'index2.php?option='. $option .'§ionid='. $redirect );
}
/**
* Form for moving item(s) to a different section and category
*/
function moveSection( $cid, $sectionid, $option ) {
global $database;
if (!is_array( $cid ) || count( $cid ) < 1) {
echo "\n";
exit;
}
//seperate contentids
$cids = implode( ',', $cid );
// Content Items query
$query = "SELECT a.title"
. "\n FROM #__content AS a"
. "\n WHERE ( a.id IN (". $cids .") )"
. "\n ORDER BY a.title"
;
$database->setQuery( $query );
$items = $database->loadObjectList();
$database->setQuery(
$query = "SELECT CONCAT_WS( ', ', s.id, c.id ) AS `value`, CONCAT_WS( '/', s.name, c.name ) AS `text`"
. "\n FROM #__sections AS s"
. "\n INNER JOIN #__categories AS c ON c.section = s.id"
. "\n WHERE s.scope = 'content'"
. "\n ORDER BY s.name, c.name"
);
$rows = $database->loadObjectList();
// build the html select list
$sectCatList = mosHTML::selectList( $rows, 'sectcat', 'class="inputbox" size="8"', 'value', 'text', null );
HTML_content::moveSection( $cid, $sectCatList, $option, $sectionid, $items );
}
/**
* Save the changes to move item(s) to a different section and category
*/
function moveSectionSave( &$cid, $sectionid, $option ) {
global $database, $my;
$sectcat = mosGetParam( $_POST, 'sectcat', '' );
list( $newsect, $newcat ) = explode( ',', $sectcat );
if (!$newsect && !$newcat ) {
mosRedirect( "index.php?option=com_content§ionid=$sectionid&mosmsg=An error has occurred" );
}
// find section name
$query = "SELECT a.name"
. "\n FROM #__sections AS a"
. "\n WHERE a.id = ". $newsect .""
;
$database->setQuery( $query );
$section = $database->loadResult();
// find category name
$query = "SELECT a.name"
. "\n FROM #__categories AS a"
. "\n WHERE a.id = ". $newcat .""
;
$database->setQuery( $query );
$category = $database->loadResult();
$total = count( $cid );
$cids = implode( ',', $cid );
$row = new mosContent( $database );
// update old orders - put existing items in last place
foreach ($cid as $id) {
$row->load( intval( $id ) );
$row->ordering = 0;
$row->store();
$row->updateOrder( "catid='$row->catid' AND state >= 0" );
}
$query = "UPDATE #__content SET sectionid = '". $newsect ."', catid='". $newcat ."'"
. "\n WHERE id IN ($cids)"
. "\n AND ( checked_out='0' OR ( checked_out='". $my->id ."') )"
;
$database->setQuery( $query );
if ( !$database->query() ) {
echo "\n";
exit();
}
// update new orders - put items in last place
foreach ($cid as $id) {
$row->load( intval( $id ) );
$row->ordering = 0;
$row->store();
$row->updateOrder( "catid='". $row->catid ."' AND state >= 0" );
}
$msg = $total. ' Item(s) successfully moved to Section: '. $section .', Category: '. $category;
mosRedirect( 'index2.php?option='. $option .'§ionid='. $sectionid .'&mosmsg='. $msg );
}
/**
* Form for copying item(s)
**/
function copyItem( $cid, $sectionid, $option ) {
global $database;
if (!is_array( $cid ) || count( $cid ) < 1) {
echo "\n";
exit;
}
//seperate contentids
$cids = implode( ',', $cid );
## Content Items query
$query = "SELECT a.title"
. "\n FROM #__content AS a"
. "\n WHERE ( a.id IN (". $cids .") )"
. "\n ORDER BY a.title"
;
$database->setQuery( $query );
$items = $database->loadObjectList();
## Section & Category query
$query = "SELECT CONCAT_WS(',',s.id,c.id) AS `value`, CONCAT_WS(' // ', s.name, c.name) AS `text`"
. "\n FROM #__sections AS s"
. "\n INNER JOIN #__categories AS c ON c.section = s.id"
. "\n WHERE s.scope='content'"
. "\n ORDER BY s.name, c.name"
;
$database->setQuery( $query );
$rows = $database->loadObjectList();
// build the html select list
$sectCatList = mosHTML::selectList( $rows, 'sectcat', 'class="inputbox" size="10"', 'value', 'text', NULL );
HTML_content::copySection( $option, $cid, $sectCatList, $sectionid, $items );
}
/**
* saves Copies of items
**/
function copyItemSave( $cid, $sectionid, $option ) {
global $database, $my;
$sectcat = mosGetParam( $_POST, 'sectcat', '' );
//seperate sections and categories from selection
$sectcat = explode( ',', $sectcat );
list( $newsect, $newcat ) = $sectcat;
if ( !$newsect && !$newcat ) {
mosRedirect( 'index.php?option=com_content§ionid='. $sectionid .'&mosmsg=An error has occurred' );
}
// find section name
$query = "SELECT a.name"
. "\n FROM #__sections AS a"
. "\n WHERE a.id = ". $newsect .""
;
$database->setQuery( $query );
$section = $database->loadResult();
// find category name
$query = "SELECT a.name"
. "\n FROM #__categories AS a"
. "\n WHERE a.id = ". $newcat .""
;
$database->setQuery( $query );
$category = $database->loadResult();
$total = count( $cid );
for ( $i = 0; $i < $total; $i++ ) {
$row = new mosContent( $database );
// main query
$query = "SELECT a.* FROM #__content AS a"
. "\n WHERE a.id = ". $cid[$i] ."";
;
$database->setQuery( $query );
$item = $database->loadObjectList();
// values loaded into array set for store
$row->id = NULL;
$row->sectionid = $newsect;
$row->catid = $newcat;
$row->hits = '0';
$row->ordering = '0';
$row->title = $item[0]->title;
$row->title_alias = $item[0]->title_alias;
$row->introtext = $item[0]->introtext;
$row->fulltext = $item[0]->fulltext;
$row->state = $item[0]->state;
$row->mask = $item[0]->mask;
$row->created = $item[0]->created;
$row->created_by = $item[0]->created_by;
$row->created_by_alias = $item[0]->created_by_alias;
$row->modified = $item[0]->modified;
$row->modified_by = $item[0]->modified_by;
$row->checked_out = $item[0]->checked_out;
$row->checked_out_time = $item[0]->checked_out_time;
$row->frontpage_up = $item[0]->frontpage_up;
$row->frontpage_down = $item[0]->frontpage_down;
$row->publish_up = $item[0]->publish_up;
$row->publish_down = $item[0]->publish_down;
$row->images = $item[0]->images;
$row->attribs = $item[0]->attribs;
$row->version = $item[0]->parentid;
$row->parentid = $item[0]->parentid;
$row->metakey = $item[0]->metakey;
$row->metadesc = $item[0]->metadesc;
$row->access = $item[0]->access;
if (!$row->check()) {
echo "\n";
exit();
}
if (!$row->store()) {
echo "\n";
exit();
}
$row->updateOrder( "catid='". $row->catid ."' AND state >= 0" );
}
$msg = $total. ' Item(s) successfully copied to Section: '. $section .', Category: '. $category;
mosRedirect( 'index2.php?option='. $option .'§ionid='. $sectionid .'&mosmsg='. $msg );
}
/**
* Function to reset Hit count of a content item
* PT
*/
function resethits( $redirect, $id ) {
global $database;
$row = new mosContent($database);
$row->Load($id);
$row->hits = "0";
$row->store();
$row->checkin();
$msg = 'Successfully Reset Hit count';
mosRedirect( 'index2.php?option=com_content§ionid='. $redirect .'&task=edit&hidemainmenu=1&id='. $id, $msg );
}
/**
* @param integer The id of the content item
* @param integer The new access level
* @param string The URL option
*/
function accessMenu( $uid, $access, $option ) {
global $database;
$row = new mosContent( $database );
$row->load( $uid );
$row->access = $access;
if ( !$row->check() ) {
return $row->getError();
}
if ( !$row->store() ) {
return $row->getError();
}
$redirect = mosGetParam( $_POST, 'redirect', $row->sectionid );
mosRedirect( 'index2.php?option='. $option .'§ionid='. $redirect );
}
function filterCategory( $query, $active=NULL ) {
global $database;
$categories[] = mosHTML::makeOption( '0', _SEL_CATEGORY );
$database->setQuery( $query );
$categories = array_merge( $categories, $database->loadObjectList() );
$category = mosHTML::selectList( $categories, 'catid', 'class="inputbox" size="1" onchange="document.adminForm.submit( );"', 'value', 'text', $active );
return $category;
}
function menuLink( $redirect, $id ) {
global $database;
$menu = mosGetParam( $_POST, 'menuselect', '' );
$link = mosGetParam( $_POST, 'link_name', '' );
$row = new mosMenu( $database );
$row->menutype = $menu;
$row->name = $link;
$row->type = 'content_item_link';
$row->published = 1;
$row->componentid = $id;
$row->link = 'index.php?option=com_content&task=view&id='. $id;
$row->ordering = 9999;
if (!$row->check()) {
echo "\n";
exit();
}
if (!$row->store()) {
echo "\n";
exit();
}
$row->checkin();
$row->updateOrder( "menutype='$row->menutype' AND parent='$row->parent'" );
$msg = $link .' (Link - Static Content) in menu: '. $menu .' successfully created';
mosRedirect( 'index2.php?option=com_content§ionid='. $redirect .'&task=edit&hidemainmenu=1&id='. $id, $msg );
}
function go2menu() {
$menu = mosGetParam( $_POST, 'menu', 'mainmenu' );
mosRedirect( 'index2.php?option=com_menus&menutype='. $menu );
}
function go2menuitem() {
$menu = mosGetParam( $_POST, 'menu', 'mainmenu' );
$id = mosGetParam( $_POST, 'menuid', 0 );
mosRedirect( 'index2.php?option=com_menus&menutype='. $menu .'&task=edit&hidemainmenu=1&id='. $id );
}
function saveOrder( &$cid ) {
global $database;
$total = count( $cid );
$order = mosGetParam( $_POST, 'order', array(0) );
$redirect = mosGetParam( $_POST, 'redirect', 0 );
$rettask = mosGetParam( $_POST, 'returntask', '' );
$row = new mosContent( $database );
$conditions = array();
// update ordering values
for( $i=0; $i < $total; $i++ ) {
$row->load( $cid[$i] );
if ($row->ordering != $order[$i]) {
$row->ordering = $order[$i];
if (!$row->store()) {
echo "\n";
exit();
} // if
// remember to updateOrder this group
$condition = "catid='$row->catid' AND state>=0";
$found = false;
foreach ( $conditions as $cond )
if ($cond[1]==$condition) {
$found = true;
break;
} // if
if (!$found) $conditions[] = array($row->id, $condition);
} // if
} // for
// execute updateOrder for each group
foreach ( $conditions as $cond ) {
$row->load( $cond[0] );
$row->updateOrder( $cond[1] );
} // foreach
$msg = 'New ordering saved';
switch ( $rettask ) {
case 'showarchive':
mosRedirect( 'index2.php?option=com_content&task=showarchive§ionid='. $redirect, $msg );
break;
default:
mosRedirect( 'index2.php?option=com_content§ionid='. $redirect, $msg );
break;
} // switch
} // saveOrder
?>