Page MenuHomeIn-Portal Phabricator

in-portal
No OneTemporary

File Metadata

Created
Sat, Jun 21, 3:55 AM

in-portal

Index: branches/RC/admin/editor/cmseditor/editor/filemanager/browser/default/connectors/php/commands.php
===================================================================
--- branches/RC/admin/editor/cmseditor/editor/filemanager/browser/default/connectors/php/commands.php (revision 10685)
+++ branches/RC/admin/editor/cmseditor/editor/filemanager/browser/default/connectors/php/commands.php (revision 10686)
@@ -1,622 +1,718 @@
<?php
/*
* FCKeditor - The text editor for internet
* Copyright (C) 2003-2004 Frederico Caldeira Knabben
*
* Licensed under the terms of the GNU Lesser General Public License:
* http://www.opensource.org/licenses/lgpl-license.php
*
* For further information visit:
* http://www.fckeditor.net/
*
* File Name: commands.php
* This is the File Manager Connector for ASP.
*
* Version: 2.0 RC3
* Modified: 2005-02-19 16:02:38
*
* File Authors:
* Frederico Caldeira Knabben (fredck@fckeditor.net)
*/
function GetFolders( $resourceType, $currentFolder )
{
// Map the virtual path to the local server path.
$sServerDir = ServerMapFolder( $resourceType, $currentFolder ) ;
// Open the "Folders" node.
$aFolders = array();
echo "<Folders>" ;
$oCurrentFolder = opendir( $sServerDir ) ;
while ( $sFile = readdir( $oCurrentFolder ) )
{
if ( $sFile != '.' && $sFile != '..' && $sFile != 'CVS' && is_dir( $sServerDir . $sFile ) )
$aFolders[] = $sFile;
//echo '<Folder name="' . ConvertToXmlAttribute( $sFile ) . '" />' ;
}
if (count($aFolders) > 0) {
natcasesort($aFolders);
foreach($aFolders AS $k=>$v) {
echo '<Folder name="' . ConvertToXmlAttribute($v) . '" />' ;
}
}
closedir( $oCurrentFolder ) ;
// Close the "Folders" node.
echo "</Folders>" ;
}
function ValidateAdminSid()
{
$conn = GetADODbConnection();
$session_time = GetConfigValue('ses_timeout')+0;
if ($session_time == 0)
{
$session_time = 3600;
}
$sid = ($_COOKIE['admin_sid'])?$_COOKIE['admin_sid']:$_COOKIE['sid'];
$sql = "SELECT count( sd.sid )
FROM session_data AS sd
LEFT JOIN sessions AS s ON s.sid = sd.sid
WHERE sd.`name` = 'admin_mode'
AND sd.`value` = '1'
AND sd.sid = '".$sid."'
AND s.expire + '".$session_time."' > unix_timestamp()";
if ($conn->GetOne($sql) > 0) {
return true;
}
}
function ValidateUserSid()
{
$conn = GetADODbConnection();
$session_time = GetConfigValue('ses_timeout')+0;
$sid = $_COOKIE['sid'];
$sql = "SELECT count( sd.sid )
FROM sessions
sid = '".$sid."'
AND expire + '".$session_time."' > unix_timestamp()";
if ($conn->GetOne($sql) > 0) {
return true;
}
}
function ValidateSID()
{
global $Config;
if (isset($Config['K4Mode'])) {
return true;
}
else {
if ($Config['validate_type'] == 'user')
return ValidateUserSid();
elseif ($Config['validate_type'] == 'admin')
return ValidateAdminSid();
else
echo "SESSION Validation FALSE";
}
return false;
}
function GetCmsTree()
{
global $Config;
$ret = "<CmsPages>";
if (isset($Config['K4Mode'])) {
$ret.= K4ReadCmsTree(0);
}
else {
$ret.= ReadCmsTree(0);
}
$ret.= "</CmsPages>";
echo $ret;
}
function K4ReadCmsTree($cat_id, $level = 0)
{
$application =& kApplication::Instance();
$application->Init();
if ($application->isModuleEnabled('Proj-CMS')) {
$lang = $application->GetVar('m_lang');
$st =& $application->recallObject('st.-dummy');
$st_options = $application->getUnitOption('st'.'.ParentId', 'Fields');
$pages = $st_options['options'];
$page_ids = array_keys($pages);
$tpls = $application->Conn->GetCol('SELECT NamedParentPath, CategoryId FROM '.TABLE_PREFIX.'Category WHERE CategoryId IN ('.join(',', $page_ids).')', 'CategoryId');
// $query = 'SELECT CategoryId, NamedParentPath, l'.$lang.'_Name AS Title FROM '.TABLE_PREFIX.'Category ORDER By l'.$lang.'_Title';
// $pages = $application->Conn->Query($query);
$res = '';
foreach ($pages as $id => $title) {
$page_path = preg_replace('/^content\//', '', strtolower($tpls[$id]).'.html');
$title = $title.' ('.$page_path.')';
$real_url = $application->HREF($tpls[$id], '', null, 'index.php');
$res .= '<CmsPage real_url="'.$real_url.'" path="@@'.$id.'@@" title="'.$prefix.htmlspecialchars($title,ENT_QUOTES).'" st_id="'.$id.'" serverpath="" />';
}
}
else {
$lang = $application->GetVar('m_lang');
$query = 'SELECT PageId, Path, l'.$lang.'_Title AS Title FROM '.TABLE_PREFIX.'Pages ORDER By l'.$lang.'_Title';
$pages = $application->Conn->Query($query);
$res = '';
foreach ($pages as $page) {
$page_path = $page['Path'].'.html';
$title = $page['Title'].' ('.$page_path.')';
$res .= '<CmsPage path="'.$page_path.'" title="'.$prefix.htmlspecialchars($title,ENT_QUOTES).'" st_id="'.$page['PageId'].'" serverpath="'.BASE_PATH.'/" />';
}
}
return $res;
}
function ReadCmsTree($st_id, $level = 0)
{
$conn = GetADODbConnection();
$query = "SELECT value FROM config WHERE name = 'default_lang_prefix'";
$rs = $conn->Execute($query);
if ($rs && !$rs->EOF)
{
$default_lang_prefix = $rs->fields['value'];
}
$query = "SELECT value FROM config WHERE name = 'cms_direct_mode'";
$rs = $conn->Execute($query);
if ($rs && !$rs->EOF)
{
$cms_mode = $rs->fields['value'];
}
$query = "SELECT value FROM config WHERE name = 'email_templates_folder_id'";
$rs = $conn->Execute($query);
if ($rs && !$rs->EOF)
{
$email_templates_folder_id = $rs->fields['value'];
}
/*
$query = "SELECT value FROM config WHERE name = 'custom_cms'";
$rs = $conn->Execute($query);
if ($rs && !$rs->EOF)
{
$custom_cms = $rs->fields['value'];
}
*/
if (GetConfigValue('custom_cms')) {
$filter = 'AND st.st_name NOT IN (' . GetConfigValue('custom_cms') . ')';
}
else {
$filter = '';
}
if ( $email_templates_folder_id == "" ) $email_templates_folder_id = 0;
$system_tpl_ids = GetConfigValue('system_tpl_ids');
if (!$system_tpl_ids)
$system_tpl_ids = '0';
if ( $cms_mode == 1 ) {
//$lang_prefix = $this->Application->GetVar('lang_prefix');
$query = "
SELECT st.*,
IF(lb.".$default_lang_prefix."_content='' OR lb.".$default_lang_prefix."_content IS NULL,
st.st_path,
lb.".$default_lang_prefix."_content
) AS page_title
FROM
structure_templates AS st
LEFT JOIN
live_blocks AS lb
ON
(st.st_id = lb.template_id) AND (lb.block_type = 3)
WHERE st.st_parent_id = ".$st_id."
AND st_id != ".$email_templates_folder_id."
AND st.st_id NOT IN ($system_tpl_ids)
AND st_path != '/cms' " . $filter . "
ORDER BY st.st_order";
}
else {
$query = "
SELECT st.*,
IF(wb.".$default_lang_prefix."_content='' OR wb.".$default_lang_prefix."_content IS NULL,
st.st_path,
wb.".$default_lang_prefix."_content
) AS page_title
FROM
structure_templates AS st
LEFT JOIN
working_blocks AS wb
ON
(st.st_id = wb.template_id) AND (wb.block_type = 3)
WHERE st.st_parent_id = ".$st_id."
AND st_id != ".$email_templates_folder_id."
AND st.st_id NOT IN ($system_tpl_ids)
AND st_path != '/cms%' " . $filter . "
ORDER BY st.st_order";
}
$rs = $conn->Execute($query);
if ($rs && !$rs->EOF)
{
while ($rs && !$rs->EOF)
{
$page_path = ltrim($rs->fields['st_path'], '/');
//$page_path = SERVER_NAME.BASE_PATH.'/index.php?t='.$page_path;
//$page_path = $page_path;
$prefix='';
for ($i = 0; $i < $level; $i++)
$prefix .= '--';
if ($level > 0)
$prefix=$prefix.'- ';
/*
$page = ereg_replace("&","&amp;",$rs->fields['page_title']);
$page = ereg_replace("\"","&quot;",$page);
$page = ereg_replace("'","&#039;",$page);
$page = ereg_replace("<","&lt;",$page);
$page = ereg_replace(">","&gt;",$page);
// echo $page." <br>";
//$page = htmlentities($rs->fields['page_title'],ENT_QUOTES);
$page = $rs->fields['page_title'];
$page = ereg_replace("&atilde;","a",$page);
*/
$page = $rs->fields['page_title'];
$page = @html_entity_decode($page,ENT_NOQUOTES,'UTF-8');
$page = @htmlspecialchars($page);
//$page = ereg_replace("&atilde;","a",$page);
$res .= '<CmsPage path="'.$page_path.'" title="'.$prefix.$page.'" st_id="'.$rs->fields['st_id'].'" serverpath="'.BASE_PATH.'/index.php?t=" />';
$res .= ReadCmsTree($rs->fields['st_id'], $level+1);
$rs->MoveNext();
}
return $res;
}
}
/*
$res .= '<CmsPage>
<path><![CDATA['.$page_path.']]></path>
<title><![CDATA['.$prefix.$page.']]></title>
<st_id><![CDATA['.$rs->fields['st_id'].']]></st_id>
<serverpath><![CDATA['.BASE_PATH.'/index.php?t=.]]></serverpath>
</CmsPage>';
*/
function GetConfigValue($var)
{
$conn = GetADODbConnection();
$query = "SELECT `value` FROM config WHERE `name` = '".$var."'";
return $conn->GetOne($query);
}
function GetFoldersAndFiles( $resourceType, $currentFolder, $aParams = array('name','asc'))
{
global $Config ;
// Map the virtual path to the local server path.
if (isset($Config['K4Mode']))
$date_format = "m/d/Y h:i A";
else
$date_format = GetConfigValue('date_format').' '.GetConfigValue('time_format');
$sServerDir = ServerMapFolder( $resourceType, $currentFolder ) ;
// Initialize the output buffers for "Folders" and "Files".
$aFolders = array();
$aFiles = array();
$aFileSizes = array();
$sFolders = '<Folders>' ;
$sFiles = '<Files>' ;
$oCurrentFolder = opendir( $sServerDir ) ;
while ( $sFile = readdir( $oCurrentFolder ) )
{
if ( $sFile != '.' && $sFile != '..' && $sFile != 'CVS')
{
if ( is_dir( $sServerDir . $sFile ) )
$aFolders[]=$sFile;
else
{
$iFileSize = filesize( $sServerDir . $sFile ) ;
//$iFileSize[] = filesize( $sServerDir . $sFile ) ;
if ( $iFileSize > 0 )
{
$size = round( $iFileSize / 1024 );
$aFileSizes[] = ($size < 1)? 1:$size;// round( $iFileSize / 1024 ) ;
} else
$aFileSizes[] = $iFileSize;
$aFiles[] = $sFile;
$aFileDate[] = filectime($sServerDir.$sFile);
//$sFiles .= '<File name="' . ConvertToXmlAttribute( $sFile ) . '" size="' . $iFileSize . '" />' ;
}
}
}
if (count($aFolders) > 0) {
natcasesort($aFolders);
switch ($aParams[1])
{
case 'desc' :
$aFolders = array_reverse($aFolders, true);
break ;
}
foreach($aFolders AS $k=>$v) {
$sFolders .= '<Folder name="' . ConvertToXmlAttribute($v) . '" />' ;
}
}
if (count($aFiles) > 0) {
if ($aParams[0] == 'name')
{
natcasesort($aFiles);
if ($aParams[1] == 'desc')
{
$aFiles = array_reverse($aFiles, true);
}
foreach($aFiles AS $fk=>$fv) {
$sFiles .= '<File name="' . ConvertToXmlAttribute( $fv ) . '" size="' . $aFileSizes[$fk] . '" date="' . date($date_format,$aFileDate[$fk]) . '" />' ;
}
}elseif ($aParams[0] == 'size') {
natcasesort($aFileSizes);
if ($aParams[1] == 'desc')
{
$aFileSizes = array_reverse($aFileSizes, true);
}
foreach($aFileSizes AS $fk=>$fv) {
$sFiles .= '<File name="' . ConvertToXmlAttribute( $aFiles[$fk] ) . '" size="' . $fv . '" date="' . date($date_format,$aFileDate[$fk]) . '" />' ;
}
} elseif ($aParams[0] == 'date') {
natcasesort($aFileDate);
if ($aParams[1] == 'desc')
{
$aFileDate = array_reverse($aFileDate, true);
}
foreach($aFileDate AS $fk=>$fv) {
$sFiles .= '<File name="' . ConvertToXmlAttribute( $aFiles[$fk] ) . '" size="' . $aFileSizes[$fk] . '" date="' . date($date_format,$fv) . '" />' ;
}
}
}
/* while ( $sFile = readdir( $oCurrentFolder ) )
{
if ( $sFile != '.' && $sFile != '..' && $sFile != 'CVS')
{
if ( is_dir( $sServerDir . $sFile ) )
//$sFolders .= '<Folder name="' . ConvertToXmlAttribute( $sFile ) . '" />' ;
else
{
$iFileSize = filesize( $sServerDir . $sFile ) ;
if ( $iFileSize > 0 )
{
$iFileSize = round( $iFileSize / 1024 ) ;
if ( $iFileSize < 1 ) $iFileSize = 1 ;
}
$sFiles .= '<File name="' . ConvertToXmlAttribute( $sFile ) . '" size="' . $iFileSize . '" />' ;
}
}
*/
if ($aParams[1] == "desc")
{
echo $sFiles ;
echo '</Files>' ;
echo $sFolders ;
echo '</Folders>' ;
} else {
echo $sFolders ;
echo '</Folders>' ;
echo $sFiles ;
echo '</Files>' ;
}
}
function CreateFolder( $resourceType, $currentFolder )
{
$sErrorNumber = '0' ;
$sErrorMsg = '' ;
if ( isset( $_GET['NewFolderName'] ) )
{
$sNewFolderName = $_GET['NewFolderName'] ;
// Map the virtual path to the local server path of the current folder.
$sServerDir = ServerMapFolder( $resourceType, $currentFolder ) ;
if ( is_writable( $sServerDir ) )
{
$sServerDir .= $sNewFolderName ;
$sErrorMsg = CreateServerFolder( $sServerDir ) ;
switch ( $sErrorMsg )
{
case '' :
$sErrorNumber = '0' ;
break ;
case 'Invalid argument' :
case 'No such file or directory' :
$sErrorNumber = '102' ; // Path too long.
break ;
default :
$sErrorNumber = '110' ;
break ;
}
}
else
$sErrorNumber = '103' ;
}
else
$sErrorNumber = '102' ;
// Create the "Error" node.
echo '<Error number="' . $sErrorNumber . '" originalDescription="' . ConvertToXmlAttribute( $sErrorMsg ) . '" />' ;
}
function UpdateCmsBlocksK3($resourceType,$currentFolder,$file_from,$file_to)
{
global $Config ;
$Config['UserFilesPathNoBase'];
$original_str = $Config['UserFilesPathNoBase'].$resourceType.$currentFolder.addslashes($file_from);
$new_str = $Config['UserFilesPathNoBase'].$resourceType.$currentFolder.addslashes($file_to);
$conn = GetADODbConnection();
if ( GetConfigValue('multilingual_mode') == 1) {
$query="SELECT lang_prefix FROM lang ORDER BY lang_id";
$rs = $conn->Execute($query);
while ($rs && !$rs->EOF) {
$sql = "UPDATE live_blocks SET ".$rs->fields['lang_prefix']."_content = replace(".$rs->fields['lang_prefix']."_content,'".$original_str."','".$new_str."')";
$conn->Execute($sql);
$rs->MoveNext();
}
} else {
$lang_prefix = GetConfigValue('default_lang_prefix');
$sql = "UPDATE live_blocks SET ".$lang_prefix."_content = replace(".$lang_prefix."_content,'".$original_str."','".$new_str."')";
$conn->Execute($sql);
}
}
function RenameFile( $resourceType, $currentFolder , $aFilenames = array())
{
global $Config ;
if (count($aFilenames) == 2)
{
$sServerDir = ServerMapFolder( $resourceType, $currentFolder ) ;
$sExtension = substr( $aFilenames[1], ( strrpos($aFilenames[1], '.') + 1 ) ) ;
$arAllowed = $Config['AllowedExtensions'][$resourceType] ;
$arDenied = $Config['DeniedExtensions'][$resourceType] ;
if (file_exists($sServerDir.$aFilenames[1]) && is_file($sServerDir.$aFilenames[1]))
{
$sErrorNumber = '204' ;
} else {
if ( ( count($arAllowed) == 0 || in_array( strtolower($sExtension), $arAllowed ) ) && ( count($arDenied) == 0 || !in_array( strtoupper($sExtension), $arDenied ) ) )
{
if (rename($sServerDir.$aFilenames[0],$sServerDir.$aFilenames[1])) {
if (isset($Config['K4Mode'])) {
// Update CMS Blocks
- } else
- UpdateCmsBlocksK3($resourceType,$currentFolder,$aFilenames[0],$aFilenames[1]);
+ } else {
+ UpdateCmsBlocksK3($resourceType,$currentFolder,$aFilenames[0],$aFilenames[1]);
+ }
$sErrorNumber = "0";
} else
$sErrorNumber = '205' ;
} else
$sErrorNumber = '203' ;
}
$sErrorMsg = '';
echo '<Error number="' . $sErrorNumber . '" originalDescription="' . ConvertToXmlAttribute( $sErrorMsg ) . '" />' ;
}
}
function FileUpload( $resourceType, $currentFolder )
{
$sErrorNumber = '0' ;
$sFileName = '' ;
if ( isset( $_FILES['NewFile'] ) && !is_null( $_FILES['NewFile']['tmp_name'] ) )
{
$oFile = $_FILES['NewFile'] ;
// Map the virtual path to the local server path.
$sServerDir = ServerMapFolder( $resourceType, $currentFolder ) ;
// Get the uploaded file name.
$sFileName = $oFile['name'] ;
$sOriginalFileName = $sFileName ;
$sExtension = strtolower(substr( $sFileName, ( strrpos($sFileName, '.') + 1 ) ) );
global $Config ;
$arAllowed = $Config['AllowedExtensions'][$resourceType] ;
$arDenied = $Config['DeniedExtensions'][$resourceType] ;
if ( ( count($arAllowed) == 0 || in_array( $sExtension, $arAllowed ) ) && ( count($arDenied) == 0 || !in_array( $sExtension, $arDenied ) ) )
{
$iCounter = 0 ;
while ( true )
{
$sFilePath = $sServerDir . $sFileName ;
if ( is_file( $sFilePath ) )
{
$iCounter++ ;
$sFileName = RemoveExtension( $sOriginalFileName ) . '(' . $iCounter . ').' . $sExtension ;
$sErrorNumber = '201' ;
}
else
{
move_uploaded_file( $oFile['tmp_name'], $sFilePath ) ;
if ( is_file( $sFilePath ) )
{
$oldumask = umask(0) ;
chmod( $sFilePath, 0666 ) ;
umask( $oldumask ) ;
}
break ;
}
}
}
else
$sErrorNumber = '202' ;
}
else
$sErrorNumber = '202' ;
echo '<script type="text/javascript">' ;
echo 'window.parent.frames["frmUpload"].OnUploadCompleted(' . $sErrorNumber . ',"' . str_replace( '"', '\\"', $sFileName ) . '") ;' ;
echo '</script>' ;
exit ;
}
function DeleteConfirmedFiles($resourceType, $currentFolder, $aFiles)
-{ global $Config;
-$sServerDir = ServerMapFolder( $resourceType, $currentFolder ) ;
-foreach ($aFiles AS $k=>$v) {
- @unlink($sServerDir.$v);
-}
+{
+ $sServerDir = ServerMapFolder($resourceType, $currentFolder);
+ foreach ($aFiles as $file) {
+ if (!$file) {
+ continue;
+ }
+ @unlink($sServerDir . $file);
+ }
}
-function DeleteFiles($resourceType, $currentFolder, $files = '', $confirm=0)
+/**
+ * Deletes files from HDD
+ *
+ * @param string $resourceType top folder name (e.g. Images)
+ * @param string $currentFolder sub-folder name
+ * @param string $files files list (separated by "|")
+ * @param int $confirm user has agreed (in 2nd time) to delete files, used on content pages
+ */
+function DeleteFiles($resourceType, $currentFolder, $files = '', $confirm = 0)
{
- global $Config ;
- if ($files == '') return;
+ global $Config;
+
+ if ($files == '') {
+ return;
+ }
+
//$files = rtrim("|",$files);
- $aFiles=explode("|",$files);
- if (count($aFiles) == 0) return;
- $conn = GetADODbConnection();
- $aLangs = array();
- $multilang = GetConfigValue('multilingual_mode');
- $def_lang_prefix = GetConfigValue('default_lang_prefix');
- if ($multilang)
- {
- $query="SELECT lang_prefix FROM lang ORDER BY lang_id";
- $rs = $conn->Execute($query);
- while ($rs && !$rs->EOF) {
- $aLangs[] = $rs->fields['lang_prefix'];
- $rs->MoveNext();
+ $aFiles = explode('|', $files);
+ if (count($aFiles) == 0) {
+ return;
+ }
+
+ // 1. get language prefixes
+ $aLangs = Array();
+ if (isset($Config['K4Mode'])) {
+ $application =& kApplication::Instance();
+ $application->Init();
+
+ $ml_helper =& $application->recallObject('kMultiLanguageHelper');
+ /* @var $ml_helper kMultiLanguageHelper */
+
+ $lang_count = $ml_helper->getLanguageCount();
+
+ for ($i = 1; $i <= $lang_count; $i++) {
+ if (!$ml_helper->LanguageFound($i)) {
+ continue;
+ }
+ $aLangs[] = 'l' . $i . '_';
}
}
else {
- $aLangs[] = $def_lang_prefix;
+ $conn = GetADODbConnection();
+
+ $multilang = GetConfigValue('multilingual_mode');
+ $def_lang_prefix = GetConfigValue('default_lang_prefix');
+ if ($multilang) {
+ $query = ' SELECT lang_prefix
+ FROM lang
+ ORDER BY lang_id';
+ $rs = $conn->Execute($query);
+ while ($rs && !$rs->EOF) {
+ $aLangs[] = $rs->fields['lang_prefix'];
+ $rs->MoveNext();
+ }
+ }
+ else {
+ $aLangs[] = $def_lang_prefix;
+ }
}
+
$sErrorNumber = 230;
if ($confirm == 1) {
+ // file deletion was confirmed (in 2nd time)
DeleteConfirmedFiles($resourceType, $currentFolder, $aFiles);
- echo '<Error number="100" originalDescription="" />' ;
+ echo '<Error number="100" originalDescription="" />';
}
+
if (!$confirm) {
- foreach ($aFiles AS $k=>$v) {
- $add_sql = '';
- if ($v == '')
- continue;
- $deleted_file = $Config['UserFilesPathNoBase'].$resourceType.$currentFolder.addslashes($v);
- for($i=0; $i<count($aLangs); $i++)
- $add_sql.= " lb1.".$aLangs[$i]."_content LIKE '%".$deleted_file."%' OR";
-
- if (strlen($add_sql) > 0) {
- $add_sql = rtrim($add_sql," OR");
- $sql = "SELECT lb1.template_id, lb2.".$def_lang_prefix."_content FROM live_blocks AS lb1
- LEFT JOIN live_blocks AS lb2 ON lb2.template_id = lb1.template_id AND lb2.block_num = 20
- WHERE".$add_sql;
- $rs = $conn->Execute($sql);
- while ($rs && !$rs->EOF) {
- $used = 1;
- $page = $rs->fields[$def_lang_prefix.'_content'];
- $page = @html_entity_decode($page,ENT_NOQUOTES,'UTF-8');
- $page = @htmlspecialchars($page);
- $ret_xml.= '<Error number="' . $sErrorNumber . '" originalDescription="' . ConvertToXmlAttribute("File '".$v."'; Template: '".$page."'") . '" />' ;
- $rs->MoveNext();
- }
+ // file deletion was confirmed (in 1st time)
+ $ret_xml = '';
+ foreach ($aFiles AS $k => $v) {
+ if ($v == '') {
+ continue;
+ }
+
+ $deleted_file = $Config['UserFilesPathNoBase'] . $resourceType . $currentFolder . addslashes($v); // $Config['UserFilesPathNoBase'] - undefined in K4 (maybe K3 too)
+
+ if (isset($Config['K4Mode'])) {
+ $ret_xml .= _getDeleteErrorXML_K4($deleted_file, $sErrorNumber, $aLangs);
+ }
+ else {
+ $ret_xml .= _getDeleteErrorXML($deleted_file, $sErrorNumber, $aLangs);
}
}
- if ($ret_xml && !$confirm)
- echo $ret_xml;
+
+ if ($ret_xml && !$confirm) {
+ // files are used on content pages and therefore can't be deleted
+ echo $ret_xml;
+ }
+
if (!$ret_xml && !$confirm) {
+ // files are not used anywhere and will be deleted
DeleteConfirmedFiles($resourceType, $currentFolder, $aFiles);
echo '<Error number="100" originalDescription="" />' ;
}
}
}
+function _getDeleteErrorXML($file_name, $error_number, $language_prefixes)
+{
+ $conn = GetADODbConnection();
+ $def_lang_prefix = GetConfigValue('default_lang_prefix');
+
+ $add_sql = Array ();
+ for ($i = 0; $i < count($language_prefixes); $i++) {
+ $add_sql[] = 'lb1.' . $language_prefixes[$i] . "_content LIKE '%" . $file_name . "%'";
+ }
+
+ $ret_xml = '';
+ if ($add_sql) {
+ $sql = 'SELECT lb1.template_id, lb2.' . $def_lang_prefix . '_content
+ FROM live_blocks AS lb1
+ LEFT JOIN live_blocks AS lb2 ON lb2.template_id = lb1.template_id AND lb2.block_num = 20
+ WHERE ' . implode(' OR ', $add_sql);
+ $rs = $conn->Execute($sql);
+
+ while ($rs && !$rs->EOF) {
+ $page = $rs->fields[$def_lang_prefix . '_content'];
+ $page = @html_entity_decode($page, ENT_NOQUOTES, 'UTF-8');
+ $page = @htmlspecialchars($page);
+ $ret_xml .= '<Error number="' . $error_number . '" originalDescription="' . ConvertToXmlAttribute("File '" . basename($file_name) . "'; Template: '" . $page . "'") . '" />';
+ $rs->MoveNext();
+ }
+ }
+
+ return $ret_xml;
+}
+
+function _getDeleteErrorXML_K4($file_name, $error_number, $language_prefixes)
+{
+ $application =& kApplication::Instance();
+ $def_lang_prefix = 'l' . $application->GetDefaultLanguageId() . '_';
+
+ $add_sql = Array ();
+ for ($i = 0; $i < count($language_prefixes); $i++) {
+ $add_sql[] = 'pc.' . $language_prefixes[$i] . "Content LIKE '%" . $file_name . "%'";
+ }
+
+ $ret_xml = '';
+ if ($add_sql) {
+ $sql = 'SELECT c.' . $def_lang_prefix . 'Name
+ FROM ' . TABLE_PREFIX . 'PageContent pc
+ LEFT JOIN ' . TABLE_PREFIX . 'Category c ON c.CategoryId = pc.PageId
+ WHERE ' . implode(' OR ', $add_sql);
+ $page_names = $application->Conn->GetCol($sql);
+
+ foreach ($page_names as $page) {
+ $ret_xml .= '<Error number="' . $error_number . '" originalDescription="' . ConvertToXmlAttribute("File '" . basename($file_name) . "'; Template: '" . $page . "'") . '" />';
+ }
+ }
+
+ return $ret_xml;
+}
+
function GetLangFromSid() {
$sid = $_COOKIE['admin_sid'];
$conn = GetADODbConnection();
$sql = "SELECT value FROM session_data WHERE name = 'old_translation_language' AND sid = $sid";
$translation_language = $conn->GetOne($sql);
return $translation_language;
}
?>
\ No newline at end of file
Property changes on: branches/RC/admin/editor/cmseditor/editor/filemanager/browser/default/connectors/php/commands.php
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.54
\ No newline at end of property
+1.54.2.1
\ No newline at end of property

Event Timeline