در سیسیتم مدیریت تصاویر یا همان media manager  امکانی برای باز نمودن و یا انزیپ کردن فایل های بارگذاری شده وجود ندارد ، لذا بر ان شدیم تا اموزش ایجاد این قابلیت را برای استفاده کنندهگان جوملا معرفی کنیم . با پیگیری این آموزش شما امکان انزیپ کردن فایل هایی با پسوند های zip و tar و gz را خواهید داشت و به آسانی خواهید توانست که بر فایل های خود مدیریت داشته و به اسانی فولد و فایلا های خود را به هاست از طریق سیستم جوملا منتقل نمایید .

نکته :

 این روش بر روی جوملای نسخه 1.5.15 امتحان شده و جواب داده است . در صورتی که می خواهید برای نسخه های قدیمی تر استفاده نمایید ابتدا جوملای خود را بروز نمایید .

ابتدا وارد روت سایت خود بشوید و به ادرس زیر مراجعه کنید و فایل مربوطه را باز کنید(view.html.php)   :
administrator/component/com_media/views/media/view.html.php

در این فایل در خط 106 شما کد زیر را مشاهده خواهید کرد :

{codecitation class="brush: php;" }

 /* (...) */
// Add a delete button
$title = JText::_('Delete');
$dhtml = "<a href=\"#\" onclick=\"MediaManager.submit('folder.delete')\"
class=\"toolbar\">
<span class=\"icon-32-delete\" title=\"$title\"
type=\"Custom\"></span>
$title</a>"
;
$bar->appendButton( 'Custom', $dhtml, 'delete' );
/* (...) */

{/codecitation}

حال بعد از کد بالا کد نوشته شده در پایین را اضافه نمایید :


{codecitation class="brush: php;" }

 /* (...) */
// Add a Unzip button
$title = JText::_('Unzip');
$dhtml = "<a href=\"#\" onclick=\"MediaManager.submit('folder.unzip')\"
class=\"toolbar\">
<span class=\"icon-32-unarchive\" title=\"$title\"
type=\"Custom\"></span>
$title</a>"
;
$bar->appendButton( 'Custom', $dhtml, 'unzip' );
/* (...) *
{/codecitation}

با این عمل در واقع شما کدی برای نمایش دکمه انزیپ کردن را در منوی ابزار مدیریت رسانه ایجاد کرده اید .
حال برای افزودن تابع انزیپ به ادرس زیر رفته و فایل (folder.php)  را باز نمایید :
administrator/component/com_media/controllers/folder.php

حال در این فایل بعد از تابع حذف (delete function) کد زیرا را اضافه نمایید (احتمالا بعد از خط 90) :

{codecitation class="brush: php;" }

   /* (...) */
function unzip() {
global $mainframe;

// Set FTP credentials, if given
jimport('joomla.client.helper');
JClientHelper::setCredentialsFromRequest('ftp');

// Get some data from the request
$tmpl = JRequest::getCmd( 'tmpl' );
$paths = JRequest::getVar( 'rm', array(), '', 'array' );
$folder = JRequest::getVar( 'folder', '', '', 'path');

// Initialize variables
$msg = array();
$ret = true;

if (count($paths)) {
foreach ($paths as $path)
{
if ($path !== JFilterInput::clean($path, 'path')) {
JError::raiseWarning(100, JText::_('Impossible de
decompresser:'
).htmlspecialchars($path, ENT_COMPAT,
'UTF-8').' '.JText::_('WARNDIRNAME'));
continue;
}

$fullPath = JPath::clean(COM_MEDIA_BASE.DS.$folder.DS.$path);

if (is_file($fullPath)) {
$ext = JFile::getExt(strtolower($fullPath));
$pathdir = $fullPath;
if($ext != 'gz') {
$pathdir = str_replace( ".".$ext, "",$pathdir);
}
else {
$pathdir = str_replace( ".".$ext, "",$pathdir);
$pathdir = str_replace( ".tar", "",$pathdir);
}

jimport('joomla.filesystem.*');
jimport('joomla.filesystem.archive');
JFolder::create($pathdir);
JFile::write($pathdir.DS."index.html", "<html>\n<body
bgcolor=\"#FFFFFF\">\n</body>\n</html>"
);
JArchive::extract($fullPath, $pathdir);


} else if (is_dir($fullPath)) {
JError::raiseWarning(100, JText::_('Imossible de
decompresser:'
).$fullPath.' '.JText::_('Pas un fichier
ZIP'
));
}
}
}
if ($tmpl == 'component') {
// We are inside the iframe
$mainframe->redirect('index.php?option=com_media&view=mediaList&
folder='
.$folder.'&tmpl=component');
} else {
$mainframe->redirect('index.php?option=com_media&folder='.$folder);
}
}
/* (...) */
{/codecitation}


برگرفته شده از :

http://docs.joomla.org/Unzip_function_in_the_Media_Manager