<?PHP
/* ====================
Seditio - Website engine
Copyright Neocrome & Seditio Team
https://seditio.org
[BEGIN_SED]
File=plugins/skineditor/skineditor.php
Version=179
Updated=2022-jul-15
Type=Plugin
Author=Seditio Team
Description=
[END_SED]
[BEGIN_SED_EXTPLUGIN]
Code=skineditor
Part=admin
File=skineditor.admin
Hooks=tools
Tags=
Order=10
[END_SED_EXTPLUGIN]
==================== */
if (!defined('SED_CODE') || !defined('SED_ADMIN')) { die('Wrong URL.'); }
$sk = sed_import('sk', 'G', 'ALP', 24);
$f = sed_import('f', 'G', 'TXT', 128);
$fb = sed_import('fb', 'G', 'TXT', 128);
$error_string = '';
// For show & edit php file add into array 'php'
$allow_extensions = array('tpl', 'txt', 'css', 'js');
$sx = new XTemplate(SED_ROOT . '/plugins/skineditor/skineditor.tpl');
if (!empty($sk))
{
if (!empty($f))
{ $n = 'edit'; }
else
{ $n = 'skin'; }
}
switch ($n)
{
case 'skin' :
$skininfo = SED_ROOT. "/skins/".$sk."/".$sk.".php";
$skindir = SED_ROOT . "/skins/".$sk."/";
if (!file_exists($skininfo))
{ sed_die('Wrong skin code.'); }
$info = sed_infoget($skininfo);
$adminpath[] = array (sed_url("admin", "m=tools&p=skineditor&sk=".$sk), $info['Name']);
if ($a == 'makbak')
{
sed_check_xg();
copy($skindir.$fb, $skindir.$fb.".bak");
}
elseif ($a == 'resbak')
{
sed_check_xg();
if (file_exists($skindir.$fb.".bak"))
{
if (file_exists($skindir.$fb))
{ unlink($skindir.$fb); }
if (copy($skindir.$fb.".bak", $skindir.$fb))
{ unlink($skindir.$fb.".bak"); }
}
}
elseif ($a == 'delbak')
{
sed_check_xg();
unlink($skindir.$fb.".bak");
}
$handle = opendir($skindir);
while ($f = readdir($handle))
{
$extension_arr = explode(".", $f);
$extension = end($extension_arr);
if (in_array(mb_strtolower($extension), $allow_extensions) && (mb_strrpos($f, ".") > 0))
{ $skinlist[] = $f; }
elseif (mb_strtolower($extension) == 'bak')
{ $baklist[] = $f; }
}
closedir($handle);
sort($skinlist);
if (isset($baklist) && is_array($baklist))
{
@sort($baklist);
foreach($baklist as $i => $x)
{ $backupfile[$x] = TRUE; }
}
$j = 0;
$total_size = 0;
foreach($skinlist as $i => $x)
{
$file_size = @filesize($skindir.$x);
$sx->assign(array(
"TPL_SKIN_LIST_ROW_EDIT" => "<a href=\"".sed_url("admin", "m=tools&p=skineditor&sk=".$sk."&f=".$x)."\">".$out['ic_edit']."</a>",
"TPL_SKIN_LIST_ROW_EDITURL" => sed_url("admin", "m=tools&p=skineditor&sk=".$sk."&f=".$x),
"TPL_SKIN_LIST_ROW_TPLFILE" => $x,
"TPL_SKIN_LIST_ROW_TPLSIZE" => $file_size
));
$xbak = $x.".bak";
$bcf = (isset($backupfile[$xbak]) && $backupfile[$xbak]) ? TRUE : FALSE;
$sx->assign(array(
"TPL_SKIN_LIST_ROW_BACKUP" => ($bcf) ? "" : "<a href=\"".sed_url("admin", "m=tools&p=skineditor&sk=".$sk."&fb=".$x."&a=makbak&".sed_xg())."\">".$out['ic_checked']."</a>",
"TPL_SKIN_LIST_ROW_BACKUPURL" => ($bcf) ? "" : sed_url("admin", "m=tools&p=skineditor&sk=".$sk."&fb=".$x."&a=makbak&".sed_xg()),
"TPL_SKIN_LIST_ROW_DELETE_BACKUP" => ($bcf) ? "<a href=\"".sed_url("admin", "m=tools&p=skineditor&sk=".$sk."&fb=".$x."&a=delbak&".sed_xg())."\">".$out['ic_unchecked']."</a>" : "",
"TPL_SKIN_LIST_ROW_DELETE_BACKUPURL" => ($bcf) ? sed_url("admin", "m=tools&p=skineditor&sk=".$sk."&fb=".$x."&a=delbak&".sed_xg()) : "",
"TPL_SKIN_LIST_ROW_RESTORE_BACKUP" => ($bcf) ? "<a href=\"".sed_url("admin", "m=tools&p=skineditor&sk=".$sk."&fb=".$x."&a=resbak&".sed_xg())."\">".$out['ic_reset']."</a>" : "",
"TPL_SKIN_LIST_ROW_RESTORE_BACKUPURL" => ($bcf) ? sed_url("admin", "m=tools&p=skineditor&sk=".$sk."&fb=".$x."&a=resbak&".sed_xg()) : "",
"TPL_SKIN_LIST_ROW_XBACKUP" => ($bcf) ? $xbak : ""
));
$j++;
$total_size += $file_size;
$sx->parse("SKINEDITOR.TPL_SKIN_LIST.TPL_SKIN_LIST_ROW");
}
$sx->assign(array(
"TPL_SKIN_LIST_TOTALSIZE" => $total_size,
"TPL_SKIN_LIST_FILES" => $j
));
$sx->parse("SKINEDITOR.TPL_SKIN_LIST");
break;
case 'edit' :
$skininfo = SED_ROOT . "/skins/".$sk."/".$sk.".php";
$skindir = SED_ROOT . "/skins/".$sk."/";
$b1 = sed_import('b1', 'P', 'ALP', 16);
if (!file_exists($skininfo))
{ sed_die('Wrong file name'); }
$info = sed_infoget($skininfo);
$adminpath[] = array(sed_url("admin", "m=tools&p=skineditor&sk=".$sk), $info['Name']);
$editfile = SED_ROOT . "/skins/".$sk."/".$f;
$extension_arr = explode(".", $f);
$extension = end($extension_arr);
if (in_array(mb_strtolower($extension), $allow_extensions) && (mb_strrpos($f, ".") > 0))
{
if ($a == 'update')
{
$content = sed_import('content', 'P', 'HTR');
$file_isup = TRUE;
if (!($fp = @fopen($editfile, 'w'))) { $file_isup = FALSE; }
if (!(@fwrite($fp, $content))) { $file_isup = FALSE; }
@fclose($fp);
if ($file_isup)
{
if($b1)
{
sed_redirect(sed_url("admin", "m=tools&p=skineditor&sk=".$sk, "", true));
exit;
}
else
{
sed_redirect(sed_url("admin", "m=tools&p=skineditor&sk=".$sk."&f=".$f, "", true));
exit;
}
}
else
{
$error_string .= "Error !<br />Could not write the file : ".$editfile;
}
}
if (!($fp = @fopen($editfile, 'r')))
{ sed_die('Could not open the file'); }
$filecont = fread($fp, 256000);
@fclose($fp);
switch ($extension) {
case 'css':
$hmode = 'text/css';
break;
case 'js':
$hmode = 'text/javascript';
break;
case 'php':
$hmode = 'application/x-httpd-php';
break;
default:
$hmode = 'text/html';
}
$sx->assign(array(
"TPL_SKIN_EDIT_SEND" => sed_url("admin", "m=tools&p=skineditor&sk=".$sk."&f=".$f."&a=update&".sed_xg()),
"TPL_SKIN_EDIT_FILE" => $editfile,
"TPL_SKIN_EDIT_CHANCEL_URL" => sed_url("admin", "m=tools&p=skineditor&sk=".$sk),
"TPL_SKIN_EDIT_TEXTAREA" => "<textarea cols=\"96\" rows=\"16\" name=\"content\" id=\"content\" class=\"noeditor\">".sed_cc($filecont, ENT_QUOTES)."</textarea>",
"TPL_SKIN_EDIT_HMODE" => $hmode
));
$sx->parse("SKINEDITOR.TPL_SKIN_EDIT");
}
else
{
$error_string .= "Not allowed file extension : ".$editfile;
}
break;
default:
$handle = opendir(SED_ROOT . "/skins/");
while ($f = readdir($handle))
{
if (mb_strpos($f, '.') === FALSE)
{ $skinlist[] = $f; }
}
closedir($handle);
sort($skinlist);
foreach ($skinlist as $i => $x)
{
$skininfo = SED_ROOT . "/skins/".$x."/".$x.".php";
$info = sed_infoget($skininfo);
$sx->assign(array(
"SKIN_LIST_ROW_EDIT" => "<a href=\"".sed_url("admin", "m=tools&p=skineditor&sk=".$x)."\">".$out['ic_edit']."</a>",
"SKIN_LIST_ROW_EDITURL" => sed_url("admin", "m=tools&p=skineditor&sk=".$x),
"SKIN_LIST_ROW_NAME" => $info['Name'],
"SKIN_LIST_ROW_CODE" => $x,
"SKIN_LIST_ROW_VERSION" => $info['Version'],
"SKIN_LIST_ROW_UPDATED" => $info['Updated'],
"SKIN_LIST_ROW_AUTHOR" => $info['Author'],
"SKIN_LIST_ROW_DEFAULT" => ($x == $cfg['defaultskin']) ? $out['ic_checked'] : '',
"SKIN_LIST_ROW_SET" => ($x == $skin) ? $out['ic_checked'] : ''
));
$sx->parse("SKINEDITOR.SKIN_LIST.SKIN_LIST_ROW");
}
$sx->parse("SKINEDITOR.SKIN_LIST");
break;
}
if (!empty($error_string))
{
$sx->assign("SKINEDITOR_ERROR_BODY", sed_alert($error_string, 'e'));
$sx->parse("SKINEDITOR.SKINEDITOR_ERROR");
}
$sx->parse("SKINEDITOR");
$plugin_body = $sx->text("SKINEDITOR");
?>