File size: 1,840 Bytes
07c3cdd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?php

use ProcessMaker\Core\Installer;
use ProcessMaker\Plugins\PluginRegistry;

$inst = new Installer();

$oProcess = new Processes();

//Get Available autoinstall process
$availablePlugins = $inst->getDirectoryFiles( PATH_OUTTRUNK . "autoinstall", "tar" );

rsort( $availablePlugins );

$path = PATH_OUTTRUNK . "autoinstall" . PATH_SEP;
$message = "";
foreach ($availablePlugins as $filename) {


    $tar = new Archive_Tar( $path . $filename );
    $sFileName = substr( $filename, 0, strrpos( $filename, '.' ) );
    $sClassName = substr( $filename, 0, strpos( $filename, '-' ) );

    $aFiles = $tar->listContent();
    $bMainFile = false;
    $bClassFile = false;
    foreach ($aFiles as $key => $val) {
        if ($val['filename'] == $sClassName . '.php') {
            $bMainFile = true;
        }
        if ($val['filename'] == $sClassName . PATH_SEP . 'class.' . $sClassName . '.php') {
            $bClassFile = true;
        }
    }
    if ($bMainFile && $bClassFile) {
        $res = $tar->extract( PATH_PLUGINS );
    } else {
        throw (new Exception( "The file $filename doesn't contain class: $sClassName " ));
    }

    //print "change to ENABLED";
    $oPluginRegistry = PluginRegistry::loadSingleton();

    $pluginFile = $sClassName . '.php';
    if (! file_exists( PATH_PLUGINS . $sClassName . '.php' )) {
        throw (new Exception( "File '$pluginFile' doesn't exist " ));
    }

    require_once (PATH_PLUGINS . $pluginFile);
    $details = $oPluginRegistry->getPluginDetails( $pluginFile );

    $oPluginRegistry->installPlugin($details->getNamespace());
    $oPluginRegistry->enablePlugin($details->getNamespace());
    $oPluginRegistry->setupPlugins(); //get and setup enabled plugins
    $oPluginRegistry->savePlugin($details->getNamespace());

    $message .= "$filename - OK<br>";

}

echo $message;