unzip function in the media manager component of joomla 1.5

Forum closed, please submit your tips and tricks to: http://docs.joomla.org/Category:Tips_and_tricks
Forum rules
Please submit all new Tips and Tricks to: http://docs.joomla.org/Category:Tips_and_tricks

This forum section will be closed and removed eventually.
User avatar
Marko34
Joomla! Fledgling
Joomla! Fledgling
Posts: 2
Joined: Mon Jun 30, 2008 12:54 pm
Contact:

unzip function in the media manager component of joomla 1.5

Postby Marko34 » Tue Jul 15, 2008 3:20 pm

Hello everyone,

I have developed a hack to had the capacity to unzip and untar files in the media manager component of joomla 1.5. It work like the delete function, you check the file and you click on the icon to unzip the selected file. It generate a folder with the same name of the selected file.

This hack is avaible here http://www.marc-dugas.fr/Blog/Blog/37-blog/62-update-de-la-fonction-de-decompression-pour-joomla-15 at the end of the post.

Just copy it at the root of your site.

By hand it work like this.

Open the file administrator/component/com_media/views/media/view.html.php and after the line 106

Code: Select all

/* (...) */
// 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' );
/* (...) */ 


add

Code: Select all

/* (...) */
// 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' );
/* (...) */ 


This add the icon button on the top of the media manager near the delete button.
Then open the file administrator/component/com_media/controllers/folder.php and add after the delete function

Code: Select all

/* (...) */
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);
    }
}
/* (...) */ 


That's all. My hack use the joomla.filesystem.archive librairy of joomla 1.5 and work with zip, tar and gz extension.

I hope that you will like my hack which is usefull for me.

PS: Sorry if my english is not very well, i'm a poor french computer scientist :-[

Gergo Erdosi
Joomla! Virtuoso
Joomla! Virtuoso
Posts: 4031
Joined: Sat Nov 11, 2006 9:34 pm
Location: Hungary

Re: unzip function in the media manager component of joomla 1.5

Postby Gergo Erdosi » Thu Jul 17, 2008 3:50 pm



Return to “Submit Your Suggested Tips & Tricks to Docs.joomla.org now please.”

Who is online

Users browsing this forum: No registered users and 2 guests