<?PHP

/* ====================
Seditio - Website engine
Copyright Neocrome & Seditio Team
https://seditio.org
[BEGIN_SED]
File=admin.page.inc.php
Version=179
Updated=2022-jul-15
Type=Core.admin
Author=Seditio Team
Description=Administration panel
[END_SED]
==================== */

if (!defined('SED_CODE') || !defined('SED_ADMIN')) { die('Wrong URL.'); }

list($usr['auth_read'], $usr['auth_write'], $usr['isadmin']) = sed_auth('admin', 'any');
sed_block($usr['isadmin']);

$mn = sed_import('mn', 'G', 'TXT');

// ---------- Breadcrumbs
$urlpaths = array();
$urlpaths[sed_url("admin", "m=page")] = $L['Pages'];
$admintitle = $L['Pages'];

$totaldbpages = sed_sql_rowcount($db_pages);
$sql = sed_sql_query("SELECT COUNT(*) FROM $db_pages WHERE page_state=1");
$sys['pagesqueued'] = sed_sql_result($sql,0,'COUNT(*)');
                     
$structure_mode[0] = $L['Default'];
$structure_mode[1] = $L['Group'];
$structure_mode[2] = $L['Sub'];

$t = new XTemplate(sed_skinfile('admin.page', false, true));

switch($mn)
	{
	case 'structure':
  
    // ============= Structure ==============================
    
    list($usr['auth_read'], $usr['auth_write'], $usr['isadmin']) = sed_auth('admin', 'a');
    sed_block($usr['isadmin']);
    	
	$urlpaths[sed_url("admin", "m=page&mn=structure")] = $L['Structure'];
	$admintitle = $L['Structure'];
    
    if ($n == 'options')
    	{
    	if ($a == 'update')
    		{
				
			/* === Hook === */
			$extp = sed_getextplugins('admin.page.structure.edit.first');
			if (is_array($extp))
				{ foreach($extp as $k => $pl) { include(SED_ROOT . '/plugins/'.$pl['pl_code'].'/'.$pl['pl_file'].'.php'); } }
			/* ===== */ 				
				
    		$rpath = sed_import('rpath','P','TXT');
    		$rtitle = sed_import('rtitle','P','TXT');
    		$rtplmode = sed_import('rtplmode','P','INT');
    		$rdesc = sed_import('rdesc','P','TXT');
			$rstext = sed_import('rstext','P','HTM'); //New v175
    		$ricon = sed_import('ricon','P','TXT');
    		$rgroup = sed_import('rgroup','P','BOL');
			
			$rthumb = sed_import('rthumb','P','TXT'); // New v178		
			$rseotitle = sed_import('rseotitle','P','TXT');
			$rseodesc = sed_import('rseodesc','P','TXT');
			$rseokeywords = sed_import('rseokeywords','P','TXT');
			$rseoh1 =  sed_import('rseoh1','P','TXT');
    		
    		$rallowcomments = sed_import('rallowcomments', 'P', 'BOL');  //New v173
    		$rallowratings = sed_import('rallowratings', 'P', 'BOL');  //New v173
    		
			if ($rtplmode == 1)
				  { $rtpl = ''; }
			elseif ($rtplmode == 3)
			  { $rtpl = 'same_as_parent'; }
			else
			  { $rtpl = sed_import('rtplforced','P','ALS'); }
    
    		$sql = sed_sql_query("UPDATE $db_structure SET
    			structure_path = '".sed_sql_prep($rpath)."',
    			structure_tpl = '".sed_sql_prep($rtpl)."',
    			structure_title = '".sed_sql_prep($rtitle)."',
    			structure_desc = '".sed_sql_prep($rdesc)."',
    			structure_text = '".sed_sql_prep($rstext)."',
    			structure_icon = '".sed_sql_prep($ricon)."',
				structure_thumb = '".sed_sql_prep($rthumb)."',
				structure_seo_title = '".sed_sql_prep($rseotitle)."',
				structure_seo_desc = '".sed_sql_prep($rseodesc)."',
				structure_seo_keywords = '".sed_sql_prep($rseokeywords)."',
				structure_seo_h1 = '".sed_sql_prep($rseoh1)."',
    			structure_allowcomments = '".sed_sql_prep($rallowcomments)."',
    			structure_allowratings = '".sed_sql_prep($rallowratings)."',
    			structure_group = '".$rgroup."'
    			WHERE structure_id = '".$id."'");
    
    		  sed_cache_clear('sed_cat');
    		  sed_redirect(sed_url("admin", "m=page&mn=structure&msg=917", "", true));
    		  exit;
    		  }
    
        $sql = sed_sql_query("SELECT * FROM $db_structure WHERE structure_id='$id' LIMIT 1");
        sed_die(sed_sql_numrows($sql) == 0);
    
        $handle = opendir("skins/".$cfg['defaultskin']."/");
        $allskinfiles = array();
    
        while ($f = readdir($handle))
          {
          if (($f != ".") && ($f != "..") && mb_strtolower(mb_substr($f, mb_strrpos($f, '.')+1, 4))=='tpl')
            { $allskinfiles[] = $f; }
          }
        closedir($handle);
    
        $allskinfiles = implode (',', $allskinfiles);
    
        $row = sed_sql_fetchassoc($sql);
    
        $structure_id = $row['structure_id'];
        $structure_code = $row['structure_code'];
        $structure_path = $row['structure_path'];
        $structure_title = $row['structure_title'];
        $structure_desc = $row['structure_desc'];
        $structure_text = $row['structure_text'];  //New v175
        $structure_icon = $row['structure_icon'];
        $structure_group = $row['structure_group'];
		
		$structure_thumb = $row['structure_thumb']; //New v 178	
		$structure_seo_title = $row['structure_seo_title']; 
		$structure_seo_desc= $row['structure_seo_desc']; 
		$structure_seo_keywords = $row['structure_seo_keywords'];
		$structure_seo_h1 = $row['structure_seo_h1'];		
        
        $structure_allowcomments = $row['structure_allowcomments'];
        $structure_allowratings = $row['structure_allowratings'];
        
		$form_allowcomments = sed_radiobox("rallowcomments", $yesno_arr, $structure_allowcomments); 
		$form_allowratings = sed_radiobox("rallowratings", $yesno_arr, $structure_allowratings);	        		
		
		if (empty($row['structure_tpl']))
          {
		  $check_rtplmode = 1;
          }
        elseif ($row['structure_tpl']=='same_as_parent')
          {
          $structure_tpl_sym = "*";
		  $check_rtplmode = 3;
          }
        else
          {
          $structure_tpl_sym = "+";
		  $check_rtplmode = 2;
          }
    
    	$adminpath[] = array(sed_url("admin", "m=page&mn=structure&n=options&id=".$id), sed_cc($structure_title));

		$rtplmode_arr = array(1 => $L['adm_tpl_empty'], 3 => $L['adm_tpl_parent'], 2 => $L['adm_tpl_forced']);	
		
		$st_tpl = sed_radiobox("rtplmode", $rtplmode_arr, $check_rtplmode);
				
		$st_tpl .=  " <select name=\"rtplforced\" size=\"1\">";    
    	foreach($sed_cat as $i => $x)
    		{
    		if ($i != 'all')
    			{
    			$selected = ($i==$row['structure_tpl']) ? "selected=\"selected\"" : '';
    			$st_tpl .= "<option value=\"".$i."\" $selected> ".$x['tpath']."</option>";
    			}
    		}
    	$st_tpl .= "</select><br/>";

		$st_group = sed_checkbox("rgroup", "", $structure_group);
		
		$pfs = sed_build_pfs($usr['id'], 'savestructure', 'rstext',$L['Mypfs']);
		$pfs .= (sed_auth('pfs', 'a', 'A')) ? " &nbsp; ".sed_build_pfs(0, 'savestructure', 'rstext', $L['SFS']) : '';		
    	
		$t->assign(array(   	
			"STRUCTURE_UPDATE_SEND" => sed_url("admin", "m=page&mn=structure&n=options&a=update&id=".$structure_id),
			"STRUCTURE_UPDATE_CODE" => $structure_code,
			"STRUCTURE_UPDATE_PATH" => sed_textbox('rpath', $structure_path, 16, 16),
			"STRUCTURE_UPDATE_TITLE" => sed_textbox('rtitle', $structure_title, 48, 64),
			"STRUCTURE_UPDATE_DESC" => sed_textbox('rdesc', $structure_desc, 64, 255),
			"STRUCTURE_UPDATE_ICON" => sed_textbox('ricon', $structure_icon, 64, 128),
			"STRUCTURE_UPDATE_THUMB" => sed_textbox('rthumb', $structure_thumb, 64, 255),
			"STRUCTURE_UPDATE_SEOTITLE" => sed_textbox('rseotitle', $structure_seo_title, 64, 255),
			"STRUCTURE_UPDATE_SEODESC" => sed_textbox('rseodesc', $structure_seo_desc, 64, 255),
			"STRUCTURE_UPDATE_SEOKEYWORDS" => sed_textbox('rseokeywords', $structure_seo_keywords, 64, 255),
			"STRUCTURE_UPDATE_SEOH1" => sed_textbox('rseoh1', $structure_seo_h1, 64, 255),
			"STRUCTURE_UPDATE_TEXT" => sed_textarea('rstext', $structure_text, $cfg['textarea_default_height'], $cfg['textarea_default_width'], 'Extended')." ".$pfs,
			"STRUCTURE_UPDATE_GROUP" => $st_group,
			"STRUCTURE_UPDATE_TPL" => $st_tpl,
			"STRUCTURE_UPDATE_ALLOWCOMMENTS" => $form_allowcomments,
			"STRUCTURE_UPDATE_ALLOWRATINGS" => $form_allowratings,
			"STRUCTURE_UPDATE_MYPFS" => $pfs
		));
		
		/* === Hook === */
		$extp = sed_getextplugins('admin.page.structure.edit.tags');
		if (is_array($extp))
			{ foreach($extp as $k => $pl) { include(SED_ROOT . '/plugins/'.$pl['pl_code'].'/'.$pl['pl_file'].'.php'); } }
		/* ===== */		
    	
    	$t -> parse("ADMIN_PAGE.STRUCTURE_UPDATE");
    	
    	}
    else
    	{
    	if ($a=='update')
    		{
    		$s = sed_import('s', 'P', 'ARR');
    
    		foreach($s as $i => $k)
    			{
    			$sql1 = sed_sql_query("UPDATE $db_structure SET
    				structure_path='".sed_sql_prep($s[$i]['rpath'])."',
    				structure_group='".$s[$i]['rgroup']."'
    				WHERE structure_id='".$i."'");
    			}
    		sed_auth_clear('all');
    		sed_cache_clear('sed_cat');
    		sed_redirect(sed_url("admin", "m=page&mn=structure&msg=917", "", true));
    		exit;
    		}
    	elseif ($a=='add')
    		{
    		$g = array ('ncode','npath', 'ntitle', 'ndesc', 'nicon', 'nthumb', 'ngroup');
    		foreach($g as $k => $x) $$x = $_POST[$x];
    		$group = (isset($group)) ? 1 : 0;
    		sed_structure_newcat($ncode, $npath, $ntitle, $ndesc, $nicon, $ngroup);
    		sed_redirect(sed_url("admin", "m=page&mn=structure&msg=301", "", true));
    		exit;
    		}
    	elseif ($a=='delete')
    		{
    		sed_check_xg();
    		sed_structure_delcat($id, $c);
    		sed_redirect(sed_url("admin", "m=page&mn=structure&msg=302", "", true));
    		exit;
    		}
    
    	$sql = sed_sql_query("SELECT DISTINCT(page_cat), COUNT(*) FROM $db_pages WHERE 1 GROUP BY page_cat");
    
    	while ($row = sed_sql_fetchassoc($sql))
    		{ $pagecount[$row['page_cat']] = $row['COUNT(*)']; }
    
    	$sql = sed_sql_query("SELECT * FROM $db_structure ORDER by structure_path ASC, structure_code ASC");
    
    	$skinpath = SED_ROOT . "/skins/".$skin."/";
    
    	$jj = 0;
		while ($row = sed_sql_fetchassoc($sql))
    		{
    		$jj++;
    		$structure_id = $row['structure_id'];
    		$structure_code = $row['structure_code'];
    		$structure_path = $row['structure_path'];
    		$structure_title = $row['structure_title'];
    		$structure_desc = $row['structure_desc'];
    		$structure_icon = $row['structure_icon'];
			$structure_thumb = $row['structure_thumb'];
			$structure_seo_title = $row['structure_seo_title'];
			$structure_seo_desc = $row['structure_seo_desc'];
			$structure_seo_keywords = $row['structure_seo_keywords'];
			$structure_seo_h1 = $row['structure_seo_h1'];
    		$structure_group = $row['structure_group'];
    		$pathfieldlen = (mb_strpos($structure_path, ".") == 0) ? 3 : 9;
    		$pathfieldimg = (mb_strpos($structure_path, ".") == 0) ? '' : "<img src=\"system/img/admin/join2.gif\" alt=\"\" /> ";
    		$pagecount[$structure_code] = (isset($pagecount[$structure_code]) && $pagecount[$structure_code]) ? $pagecount[$structure_code] : "0";
    
    		if (empty($row['structure_tpl']))
    			{ $structure_tpl_sym = $L['adm_tpl_empty']; }
    		elseif ($row['structure_tpl']=='same_as_parent')
    			{ $structure_tpl_sym = $L['adm_tpl_parent']; }
    		else
    			{ $structure_tpl_sym = $L['adm_tpl_forced'].": <strong>".$sed_cat[$row['structure_tpl']]['tpath']."</strong>"; }
    
    		$st_tpl = $structure_tpl_sym.": ";
    		$st_tpl .= "<span class=\"desc\">".str_replace($skinpath, '', sed_skinfile(array('page', $sed_cat[$row['structure_code']]['tpl'])));   
    		$st_tpl .= "+";    
    		if ($sed_cat[$row['structure_code']]['group'])
				{  $st_tpl .= str_replace($skinpath, '', sed_skinfile(array('list', 'group', $sed_cat[$row['structure_code']]['tpl']))); }
    		else
				{  $st_tpl .= str_replace($skinpath, '', sed_skinfile(array('list', $sed_cat[$row['structure_code']]['tpl']))); }              
    		$st_tpl .= "</span>";    
     
    		$st_group = "<select name=\"s[$structure_id][rgroup]\" size=\"1\">";   
    		for ($i = 0; $i < 3; $i++)
    			{
    			$selected = ($i == $structure_group) ? "selected=\"selected\"" : '';
    			$st_group .= "<option value=\"$i\" $selected>".$structure_mode[$i]."</option>";	   
    			}
    		$st_group .=  "</select>";    
        		
			if (!$pagecount[$structure_code] > 0) {
				$t->assign("STRUCTURE_LIST_DELETE_URL", sed_url("admin", "m=page&mn=structure&a=delete&id=".$structure_id."&c=".$row['structure_code']."&".sed_xg()));
				$t -> parse("ADMIN_PAGE.PAGE_STRUCTURE.STRUCTURE_LIST.STRUCTURE_LIST_DELETE"); 
			}
			
			$t->assign(array(
				"STRUCTURE_LIST_CODE" => $structure_code,
				"STRUCTURE_LIST_TITLE" => "<a href=\"".sed_url("admin", "m=page&mn=structure&n=options&id=".$structure_id."&".sed_xg())."\">".sed_cc($structure_title)."</a>",
				"STRUCTURE_LIST_PATH" => $pathfieldimg.sed_textbox("s[".$structure_id."][rpath]", $structure_path, $pathfieldlen, 24),
				"STRUCTURE_LIST_TPL" => $st_tpl,
				"STRUCTURE_LIST_GROUP" => $st_group,
				"STRUCTURE_LIST_PAGECOUNT" => $pagecount[$structure_code],
				"STRUCTURE_LIST_OPEN_URL" => sed_url("list", "c=".$structure_code),
				"STRUCTURE_LIST_RIGHTS_URL" => sed_url("admin" ,"m=rightsbyitem&ic=page&io=".$structure_code)
    		));
    		
			$t -> parse("ADMIN_PAGE.PAGE_STRUCTURE.STRUCTURE_LIST");   		
    		   		
    		}

			$t->assign(array( 
				"PAGE_STRUCTURE_SEND" => sed_url("admin", "m=page&mn=structure&a=update"),
				"PAGE_STRUCTURE_ADD_SEND" => sed_url("admin", "m=page&mn=structure&a=add"),
				"PAGE_STRUCTURE_ADD_CODE" => sed_textbox('ncode', isset($ncode)?$ncode:'', 48, 255), 
				"PAGE_STRUCTURE_ADD_PATH" => sed_textbox('npath', isset($npath)?$npath:'', 16, 16),
				"PAGE_STRUCTURE_ADD_TITLE" => sed_textbox('ntitle', isset($ntitle)?$ntitle:'', 48, 64),
				"PAGE_STRUCTURE_ADD_DESC" => sed_textbox('ndesc', isset($ndesc)?$ndesc:'', 64, 255),
				"PAGE_STRUCTURE_ADD_ICON" => sed_textbox('nicon', isset($nicon)?$nicon:'', 64, 128),
				"PAGE_STRUCTURE_ADD_THUMB" => sed_textbox('nthumb', isset($nicon)?$nicon:'', 64, 255),
				"PAGE_STRUCTURE_ADD_GROUP" => sed_checkbox('ngroup')
			));

			$t -> parse("ADMIN_PAGE.PAGE_STRUCTURE"); 		
    	}

  break;
  
  case 'catorder':
  
    // ============= Categories order ==============================
    
    list($usr['auth_read'], $usr['auth_write'], $usr['isadmin']) = sed_auth('admin', 'a');
    sed_block($usr['isadmin']);
	
	$urlpaths[sed_url("admin", "m=page&mn=catorder")] = $L['adm_sortingorder'];
	$admintitle = $L['adm_sortingorder'];
    
    $options_sort = array(
    	'id' => $L['Id'],
    	'type'	=> $L['Type'],
    	'key' => $L['Key'],
    	'title' => $L['Title'],
    	'desc'	=> $L['Description'],
    	'text'	=> $L['Body'],
    	'author' => $L['Author'],
    	'owner' => $L['Owner'],
    	'date'	=> $L['Date'],
    	'begin'	=> $L['Begin'],
    	'expire'	=> $L['Expire'],
    	'count' => $L['Count'],
    	'file' => $L['adm_fileyesno'],
    	'url' => $L['adm_fileurl'],
    	'size' => $L['adm_filesize'],
    	'filecount' => $L['adm_filecount']
    	);
    
    $options_way = array (
    	'asc' => $L['Ascending'],
    	'desc' => $L['Descending']
    	);
    
    if ($a=='reorder')
    	{
    	$s = sed_import('s', 'P', 'ARR');
    
    	foreach($s as $i => $k)
    		{
    		$order = $s[$i]['order'].'.'.$s[$i]['way'];
    		$sql = sed_sql_query("UPDATE $db_structure SET structure_order='$order' WHERE structure_id='$i'");
    		}
    	sed_cache_clear('sed_cat');
       	sed_redirect(sed_url("admin", "m=page&mn=catorder", "#catorder", true));
    	}
    
    $sql = sed_sql_query("SELECT * FROM $db_structure ORDER by structure_path, structure_code");
       
    while ($row = sed_sql_fetchassoc($sql))
    	{
    	$structure_id = $row['structure_id'];
    	$structure_code = $row['structure_code'];
    	$structure_path = $row['structure_path'];
    	$structure_title = $row['structure_title'];
    	$structure_desc = $row['structure_desc'];
    	$structure_order = $row['structure_order'];
       
    	$raw = explode('.',$structure_order);
    	$sort = $raw[0];
    	$way = $raw[1];
    
    	reset($options_sort);
    	reset($options_way);
    
    	$form_sort = "<select name=\"s[".$structure_id."][order]\" size=\"1\">";
    	foreach( $options_sort as $i => $x )
    		{
    		$selected = ($i==$sort) ? 'selected="selected"' : '';
    		$form_sort .= "<option value=\"$i\" $selected>".$x."</option>";
    		}
    	$form_sort .= "</select> ";
    
    	$form_way = "<select name=\"s[".$structure_id."][way]\" size=\"1\">";
    	foreach( $options_way as $i => $x )
    		{
    		$selected = ($i==$way) ? 'selected="selected"' : '';
    		$form_way .= "<option value=\"$i\" $selected>".$x."</option>";
    		}
    	$form_way .= "</select> ";
    	
		$t->assign(array( 
			"STRUCTURE_LIST_CODE" => $structure_code,
			"STRUCTURE_LIST_PATH" => $structure_path,
			"STRUCTURE_LIST_TITLE" => sed_cc($structure_title),
			"STRUCTURE_LIST_ORDER" => $form_sort.' '.$form_way
		));

		$t -> parse("ADMIN_PAGE.PAGE_SORTING.SORTING_STRUCTURE_LIST"); 		   	
    	
    	}
    
    $t->assign(array( 
		"PAGE_SORTING_SEND" => sed_url("admin", "m=page&mn=catorder&a=reorder")
	));
    
    $t -> parse("ADMIN_PAGE.PAGE_SORTING");
  
  break;
  
  default:

    // ============= Pages queued ==============================
    
    $id = sed_import('id','G','INT');
    
    if ($a=='validate')
    	{
    	sed_check_xg();
    
    	$sql = sed_sql_query("SELECT page_cat FROM $db_pages WHERE page_id='$id'");
    	if ($row = sed_sql_fetchassoc($sql))
    		{
    		$usr['isadmin_local'] = sed_auth('page', $row['page_cat'], 'A');
    		sed_block($usr['isadmin_local']);
    		$sql = sed_sql_query("UPDATE $db_pages SET page_state=0 WHERE page_id='$id'");
    		sed_cache_clear('latestpages');
    		sed_redirect((!empty($redirect)) ? base64_decode($redirect) : sed_url("admin", "m=page&mn=queue", "", true));
    		exit;
    		}
    	else
    		{ sed_die(); }
    	}
    
    if ($a=='unvalidate')
    	{
    	sed_check_xg();
    
    	$sql = sed_sql_query("SELECT page_cat FROM $db_pages WHERE page_id='$id'");
    	if ($row = sed_sql_fetchassoc($sql))
    		{
    		$usr['isadmin_local'] = sed_auth('page', $row['page_cat'], 'A');
    		sed_block($usr['isadmin_local']);
    		$sql = sed_sql_query("UPDATE $db_pages SET page_state=1 WHERE page_id='$id'");
    		sed_cache_clear('latestpages');
    		//sed_redirect(sed_url("list", "c=".$row['page_cat'], "", true));
    		sed_redirect((!empty($redirect)) ? base64_decode($redirect) : sed_url("admin", "m=page&mn=queue", "", true));
    		exit;
    		}
    	else
    		{ sed_die(); }
    	}
    
    $sql = sed_sql_query("SELECT p.*, u.user_name 
    	FROM $db_pages as p 
    	LEFT JOIN $db_users AS u ON u.user_id=p.page_ownerid 
    	WHERE page_state=1 ORDER by page_id DESC");
    
    while ($row = sed_sql_fetchassoc($sql))
    	{
    	$row['page_title'] = empty($row['page_title']) ? '(empty title)' : $row['page_title'];
    	$sys['catcode'] = $row['page_cat'];
         
		$t->assign(array( 
			"PAGE_LIST_ID" => $row['page_id'],
			"PAGE_LIST_TITLE" => "<a href=\"".sed_url("page", "id=".$row['page_id'])."\">".sed_cc($row['page_title'])."</a>",
			"PAGE_LIST_CATPATH" => sed_build_catpath($row['page_cat'], "<a href=\"%1\$s\">%2\$s</a>"),
			"PAGE_LIST_DATE" => sed_build_date($cfg['dateformat'], $row['page_date']),
			"PAGE_LIST_OWNER" => sed_build_user($row['page_ownerid'], sed_cc($row['user_name'])), 	
			"PAGE_LIST_VALIDATE" => "<a href=\"".sed_url("admin", "m=page&mn=queue&a=validate&id=".$row['page_id']."&".sed_xg())."\" class=\"btn btn-adm\">".$L['Validate']."</a>"		
		));
		
		$t -> parse("ADMIN_PAGE.PAGE_QUEUE.PAGE_QUEUE_LIST");      
      }

    if (sed_sql_numrows($sql) == 0) { $t -> parse("ADMIN_PAGE.PAGE_QUEUE.WARNING"); }
    
    $t -> parse("ADMIN_PAGE.PAGE_QUEUE");
  
  break;
  }
  
$t->assign("ADMIN_PAGE_TITLE", $admintitle);  

$t -> parse("ADMIN_PAGE");  

$adminmain .= $t -> text("ADMIN_PAGE");
  
$adminhelp = $L['adm_help_page'];

?>
