function test_decompressFile()
 {
     @unlink(MAX_PATH . '/var/ziptest/foo.xml');
     @unlink(MAX_PATH . '/var/ziptest/etc/bar.xml');
     @rmdir(MAX_PATH . '/var/ziptest/etc');
     @rmdir(MAX_PATH . '/var/ziptest');
     $oPackageManager = new OX_PluginManager();
     $oPackageManager->pathPackages = $this->testpathPackages;
     $oPackageManager->aErrors = array();
     $this->assertFalse($oPackageManager->_decompressFile(MAX_PATH . $this->testpathData . 'ziptest.zip', '/foo'));
     $this->assertEqual(count($oPackageManager->aErrors), 3);
     $oPackageManager->aErrors = array();
     $this->assertEqual(count($oPackageManager->_decompressFile(MAX_PATH . $this->testpathData . 'ziptest.zip', MAX_PATH . '/var/')), 3);
     $this->assertEqual(count($oPackageManager->aErrors), 0);
     $this->assertTrue(file_exists(MAX_PATH . '/var/ziptest/foo.xml'));
     $this->assertTrue(file_exists(MAX_PATH . '/var/ziptest/etc/bar.xml'));
     @unlink(MAX_PATH . '/var/ziptest/foo.xml');
     @unlink(MAX_PATH . '/var/ziptest/etc/bar.xml');
     @rmdir(MAX_PATH . '/var/ziptest/etc');
     @rmdir(MAX_PATH . '/var/ziptest');
 }
function processForm(&$form, $aPluginValues)
{
    global $pathPlugin, $pathPackages, $pathAdmin;
    $aPaths = $GLOBALS['_MAX']['CONF']['pluginPaths'];
    $varTmp = MAX_PATH . '/var/tmp/';
    if (!file_exists($varTmp)) {
        mkdir($varTmp, 0777);
    }
    $pathPlugin = $varTmp . $aPluginValues['name'];
    if (!file_exists($pathPlugin)) {
        mkdir($pathPlugin, 0777);
    }
    $pathPackages = $pathPlugin . $aPaths['packages'];
    $pathAdmin = $pathPlugin . $aPaths['admin'];
    require_once LIB_PATH . '/Plugin/PluginManager.php';
    $oPluginManager = new OX_PluginManager();
    $aVersion = $aPluginValues['version'];
    $aPluginValues['date'] = date('Y-m-d');
    $aPluginValues['oxversion'] = OA_VERSION;
    $aPluginValues['version'] = $aVersion['major'] . '.' . $aVersion['minor'] . '.' . $aVersion['build'] . $aVersion['status'];
    $aGroupValues = $aPluginValues['group'];
    unset($aPluginValues['group']);
    foreach ($aGroupValues as $extension => $aGroup) {
        if ($aGroup['groupname']) {
            $aVals = $aPluginValues;
            $aVals['extension'] = $extension;
            $aVals['name'] = $aGroup['groupname'];
            $aVals['group'] = $aGroup['groupname'];
            $aPluginValues['grouporder'][] = $aGroup['groupname'];
            $oPluginManager->_decompressFile('etc/group.zip', $pathPackages . $aGroup['groupname']);
            $oBuilder = new OX_PluginBuilder_Group();
            if (isset($aGroup['schema']) && $aGroup['schema']) {
                $oBuilder->schema = true;
                $oPluginManager->_decompressFile('etc/schema.zip', $pathPackages . $aGroup['groupname']);
            }
            if ($extension == 'admin') {
                $oPluginManager->_decompressFile('etc/admin.zip', $pathPlugin);
                rename($pathAdmin . 'group', $pathAdmin . $aGroup['groupname']);
            }
            $oBuilder->init($aVals);
            $oBuilder->putGroup();
        }
    }
    $oPluginManager->_decompressFile('etc/plugin.zip', $pathPackages);
    $oBuilder = new OX_PluginBuilder_Package();
    $oBuilder->init($aPluginValues);
    $oBuilder->putPlugin();
    $aMessages[] = $aPluginValues['name'] . ' created in ' . $pathPlugin;
    return $aMessages;
}