Beispiel #1
0
    protected function _api($u = null)
    {
        $u = null === $u ? \webdof\wURI::getInstance() : $u;
        ini_set('display_errors', 0);
        $this->login();
        /*
         * ToDo:  set output formatter (defaults to jsonp)
         */
        $this->ob_compress();
        header("Content-Type: application/x-javascript; charset=UTF-8;");
        ob_start(function ($c) {
            $r = isset($this->data['data_out']) ? $this->data['data_out'] : new \stdclass();
            $r->type = isset($r->type) ? $r->type : 'print';
            $r->out = isset($r->out) ? $r->out : $c;
            $fnregex = "/^[A-Za-z0-9\$\\.-_\\({1}\\){1}]+\$/";
            $callback = isset($_REQUEST['callback']) && preg_match($fnregex, $_REQUEST['callback']) ? strip_tags($_REQUEST['callback']) : '';
            if ($callback === '') {
                $o = json_encode($r);
            } else {
                $r->callback = $callback;
                $o = $callback . '(' . json_encode($r) . ')';
            }
            return $o;
        });
        /* BEGIN extract phar (todo build/refactor API) */
        if (isset($_GET['EXTRA_EXTRACT_PHAR'])) {
            if (file_exists($this->data['CONFIGFILE']) && $this->data['config_new']['PACKAGE'] !== $this->data['config']['PACKAGE']) {
                \webdof\wResponse::status(409);
                $str = 'Error: Invalid installer package name';
                if (true === $this->debug) {
                    trigger_error($str, E_USER_ERROR);
                }
                die($str);
            }
            if (1 !== intval($this->data['INSTALLER_PHAR_AVAILABLE']) || intval(str_replace(array('"', "'"), array('', ''), $this->data['INSTALLER'])) !== 1 || !isset($this->data['PHAR_INCLUDE']) || !class_exists('\\Extract')) {
                \webdof\wResponse::status(400);
                $str = 'Error: Not in installer context';
                if (true === $this->debug) {
                    trigger_error($str, E_USER_ERROR);
                }
                die($str);
            }
            if (true !== $this->isLoggedIn()) {
                \webdof\wResponse::status(401);
                die('Invalid credentials, try to install via <a href="{___$$URL_INSTALLER_HTMLPAGE$$___}">{___$$URL_INSTALLER_HTMLPAGE$$___}</a>!');
            }
            try {
                $userInfo = posix_getpwuid(fileowner(__FILE__));
                $this->data['config']['DIR_PACKAGE'] = $userInfo['dir'] . DIRECTORY_SEPARATOR . 'files' . DIRECTORY_SEPARATOR;
                chmod($this->data['config']['DIR_PACKAGE'], 0755);
                if (!is_dir($this->data['config']['DIR_PACKAGE']) || !is_writable($this->data['config']['DIR_PACKAGE'])) {
                    $this->data['config']['DIR_PACKAGE'] = $userInfo['dir'] . DIRECTORY_SEPARATOR;
                    chmod($this->data['config']['DIR_PACKAGE'], 0755);
                }
                if (!is_dir($this->data['config']['DIR_PACKAGE']) || !is_writable($this->data['config']['DIR_PACKAGE'])) {
                    $this->data['config']['DIR_PACKAGE'] = $this->data['DIR'];
                }
            } catch (\Exception $e) {
                $str = 'Warning: Cannot get home dir';
                if (true === $this->debug) {
                    trigger_error($str, E_USER_WARNING);
                }
                $this->data['config']['DIR_PACKAGE'] = $this->data['DIR'];
            }
            if (isset($_REQUEST['DIR_PACKAGE']) && is_dir($_REQUEST['DIR_PACKAGE'])) {
                chmod($_REQUEST['DIR_PACKAGE'], 0755);
                $this->data['config']['DIR_PACKAGE'] = $_REQUEST['DIR_PACKAGE'];
            }
            if (!is_dir($this->data['config']['DIR_PACKAGE']) || !is_writable($this->data['config']['DIR_PACKAGE'])) {
                $this->data['config']['DIR_PACKAGE'] = $this->data['DIR'];
            }
            if (isset($_REQUEST['DIR_WWW']) && is_dir($_REQUEST['DIR_WWW'])) {
                chmod($_REQUEST['DIR_WWW'], 0755);
                $this->data['config']['DIRS']['www'] = $_REQUEST['DIR_WWW'];
            }
            if (!is_dir($this->data['config']['DIRS']['www']) || !is_writable($this->data['config']['DIRS']['www'])) {
                $this->data['config']['DIRS']['www'] = $this->data['DIR'] . 'www' . DIRECTORY_SEPARATOR;
            }
            $this->data['CONFIGFILE'] = $this->data['config']['DIR_PACKAGE'] . 'config.frdl.php';
            if (isset($_REQUEST['test']) && 'response' === $_REQUEST['test']) {
                \webdof\wResponse::status(200);
                $this->data['data_out']->code = 200;
                $this->data['data_out']->extra = true;
                $this->data['data_out']->out = 'OK';
                $this->data['data_out']->changed = json_encode($this->data['config']) !== json_encode($this->data['config_new']);
                $this->data['data_out']->config = new \stdclass();
                $this->data['data_out']->config_new = new \stdclass();
                $this->data['data_out']->config->PACKAGE = $this->data['config']['PACKAGE'];
                $this->data['data_out']->config_new->PACKAGE = $this->data['config_new']['PACKAGE'];
                $this->data['data_out']->config->VERSION = $this->data['config']['VERSION'];
                $this->data['data_out']->config_new->VERSION = $this->data['config_new']['VERSION'];
                $this->data['data_out']->config->INSTALLED = $this->data['config']['INSTALLED'];
                $this->data['data_out']->config_new->INSTALLED = $this->data['config_new']['INSTALLED'];
                $this->data['data_out']->config->REGISTERED = $this->data['config']['REGISTERED'];
                $this->data['data_out']->config_new->REGISTERED = $this->data['config_new']['REGISTERED'];
                $this->data['data_out']->config->UNAME = $this->data['config']['UNAME'];
                $this->data['data_out']->config_new->UNAME = $this->data['config_new']['UNAME'];
                $this->data['data_out']->config->UID = $this->data['config']['UID'];
                $this->data['data_out']->config_new->UID = $this->data['config_new']['UID'];
                $this->data['data_out']->config->DIR_PACKAGE = $this->data['config']['DIR_PACKAGE'];
                $this->data['data_out']->config_new->DIR_PACKAGE = $this->data['config_new']['DIR_PACKAGE'];
                $wwwdir = is_dir($this->data['config']['DIRS']['www']) ? $this->data['config']['DIRS']['www'] : $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR;
                $this->data['data_out']->config->DIR_WWW = $wwwdir;
                $this->data['data_out']->config_new->DIR_WWW = $wwwdir;
                die('OK');
            }
            $EXTRA =& $this->data['config']['EXTRA'];
            mkdir($this->data['config']['DIR_PACKAGE'], 0755, true);
            try {
                \Extract::from($this->data['PHAR_INCLUDE'])->to($this->data['config']['DIR_PACKAGE'], function (\Entry $entry) use(&$EXTRA) {
                    if (false == strpos(basename($entry->getName()), '.') && (true == \webdof\valFormats::is(basename($entry->getName()), 'md5', true) || true == \webdof\valFormats::is(basename($entry->getName()), 'sha1', true))) {
                        return;
                    }
                    if ('config.frdl.php' == basename($entry->getName()) || 'config.php' == basename($entry->getName())) {
                        return;
                    }
                    //  if(true == $EXTRA['extra']['pragmamx']['main'] ){
                    if ('.htaccess' === basename($entry->getName())) {
                        return;
                    }
                    if ('index.php' === basename($entry->getName())) {
                        return;
                    }
                    //   }
                });
            } catch (\Exception $e) {
                //\webdof\wResponse::status(409);
                //$str = $this->data['PHAR_INCLUDE'] .' -> '.$this->data['DIR'].' ('.__LINE__.') - ' .$e->getMessage();
                //if(true === $this->debug)trigger_error($str, E_USER_ERROR);
                //die($str);
            }
            if (file_exists($this->data['config']['DIR_PACKAGE'] . 'composer.json')) {
                /*
                			 	   		 $.WebfanDesktop.Registry.Programs[\'frdl-webfan\'].config.loc.api_url="'.$this->data['config']['URL_API_ORIGINAL'].'";
                */
                $this->data['data_out']->js = trim(preg_replace("/\\s+|\n/", " ", 'try{
			 			$(\'#window_\' + \'frdl-webfan\').find(\'#wd-li-frdl-webfan-installPHAR\').find(\'u\').html(\'Update\');
			 			$.WebfanDesktop.Registry.Programs[\'frdl-webfan\'].formConfig();
			 		
			 			}catch(err){console.error(err);}			 			
			 			'));
                if ('' === $this->data['config_new']['ADMIN_PWD']) {
                    $this->data['config_new']['ADMIN_PWD'] = $this->data['config']['ADMIN_PWD'];
                }
                if ($this->data['config_new']['ADMIN_PWD'] !== $this->data['config']['ADMIN_PWD']) {
                    $this->data['data_out']->js .= ' 
					     		alert("Attention: Password has changed (' . trim($_POST['pwd'], '"\' ') . ')!");
							 ';
                }
                if ('' === $this->data['config_new']['PIN']) {
                    $this->data['config_new']['PIN'] = $this->data['config']['PIN'];
                }
                if ($this->data['config_new']['PIN'] !== $this->data['config']['PIN']) {
                    $this->data['data_out']->js .= ' 
					     		alert("Attention: PIN has changed (' . $this->aSess['PIN'] . ')!");
							 ';
                }
                $this->data['config']['VERSION'] = $this->data['config_new']['VERSION'];
                $this->data['config']['DOWNLOADUPDATETIME'] = $this->data['config_new']['DOWNLOADTIME'];
                $this->data['config']['UPDATETIME'] = time();
                $this->data['config']['ADMIN_PWD'] = $this->aSess['ADMIN_PWD'];
                $this->data['config']['PIN'] = $this->aSess['PIN'];
                if (0 === intval($this->data['config']['UID']) && 0 !== intval($this->data['config_new']['UID'])) {
                    $this->data['config']['UID'] = $this->data['config_new']['UID'];
                }
                if ('' === $this->data['config']['UNAME'] && '' !== $this->data['config_new']['UNAME']) {
                    $this->data['config']['UNAME'] = $this->data['config_new']['UNAME'];
                }
                $this->data['config']['DIRS'] = array_merge(isset($this->data['config']['DIRS']) && is_array($this->data['config']['DIRS']) ? $this->data['config']['DIRS'] : array(), array('psr-0' => null, 'psr-4' => $this->data['config']['DIR_PACKAGE'] . '.ApplicationComposer' . DIRECTORY_SEPARATOR . 'lib' . DIRECTORY_SEPARATOR, 'apps' => $this->data['config']['DIR_PACKAGE'] . '.ApplicationComposer' . DIRECTORY_SEPARATOR . 'apps' . DIRECTORY_SEPARATOR, 'components' => $this->data['config']['DIR_PACKAGE'] . '.ApplicationComposer' . DIRECTORY_SEPARATOR . 'components' . DIRECTORY_SEPARATOR, 'batch' => $this->data['config']['DIR_PACKAGE'] . '.ApplicationComposer' . DIRECTORY_SEPARATOR . 'batch' . DIRECTORY_SEPARATOR, 'cache' => $this->data['config']['DIR_PACKAGE'] . '.ApplicationComposer' . DIRECTORY_SEPARATOR . 'cache' . DIRECTORY_SEPARATOR, 'config' => $this->data['config']['DIR_PACKAGE'] . '.ApplicationComposer' . DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR, 'data.norm' => $this->data['config']['DIR_PACKAGE'] . '.ApplicationComposer' . DIRECTORY_SEPARATOR . 'data.norm' . DIRECTORY_SEPARATOR, 'data.storage' => $this->data['config']['DIR_PACKAGE'] . '.ApplicationComposer' . DIRECTORY_SEPARATOR . 'data.storage' . DIRECTORY_SEPARATOR, 'packages' => $this->data['config']['DIR_PACKAGE'] . '.ApplicationComposer' . DIRECTORY_SEPARATOR . 'packages' . DIRECTORY_SEPARATOR, 'repositories' => $this->data['config']['DIR_PACKAGE'] . '.ApplicationComposer' . DIRECTORY_SEPARATOR . 'repositories' . DIRECTORY_SEPARATOR, 'servers' => $this->data['config']['DIR_PACKAGE'] . '.ApplicationComposer' . DIRECTORY_SEPARATOR . 'servers' . DIRECTORY_SEPARATOR, 'share' => $this->data['config']['DIR_PACKAGE'] . '.ApplicationComposer' . DIRECTORY_SEPARATOR . 'share' . DIRECTORY_SEPARATOR, 'tmp' => $this->data['config']['DIR_PACKAGE'] . '.ApplicationComposer' . DIRECTORY_SEPARATOR . 'tmp' . DIRECTORY_SEPARATOR, 'vendor' => $this->data['config']['DIR_PACKAGE'] . '.ApplicationComposer' . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR, 'www' => is_dir($this->data['config']['DIRS']['www']) && is_writable($this->data['config']['DIRS']['www']) ? $this->data['config']['DIRS']['www'] : $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR, 'files' => isset($_REQUEST['EXTRA_DIR']) && is_dir($_REQUEST['EXTRA_DIR']) ? $_REQUEST['EXTRA_DIR'] : (is_dir($this->homedir() . DIRECTORY_SEPARATOR . 'files' . DIRECTORY_SEPARATOR) ? $this->homedir() . DIRECTORY_SEPARATOR . 'files' . DIRECTORY_SEPARATOR : $this->data['config']['DIR_PACKAGE'] . '.ApplicationComposer' . DIRECTORY_SEPARATOR . '.files' . DIRECTORY_SEPARATOR)));
                $files = array();
                $this->data['config']['FILES'] = array_merge(isset($this->data['config']['FILES']) && is_array($this->data['config']['FILES']) ? $this->data['config']['FILES'] : array(), array('composer' => $this->data['config']['DIR_PACKAGE'] . 'composer.json', 'config' => $this->data['CONFIGFILE'], 'database-schema' => $this->data['config']['DIRS']['config'] . 'database-schema.dat', 'boot.batch' => $this->data['config']['DIRS']['batch'] . '.boot.bat'));
                $config = $this->data['config'];
                if (true === $EXTRA['extra']['pragmamx']['main']) {
                    $config['URL'] .= 'setup.php';
                }
                if (!isset($this->data['config']['autoupdate'])) {
                    $this->data['config']['autoupdate'] = true;
                }
                $php = "<?php\n\t\t\t \t\t\t/*\n\t\t\t \t\t\t  - Do not edit this file manually! \n\t\t\t \t\t\t  Application Composer - Config\n\t\t\t \t\t\t  Download: {___\${$URL_INSTALLER_HTMLPAGE}\${$___}}\n\t\t\t \t\t\t  \n\t\t\t \t\t\t*/\n\t\t\t \t\t\t    if(isset(\$this) &&\n\t\t\t \t\t\t     (  get_class(\$this) === '\\" . get_class($this) . "' \n\t\t\t \t\t\t     || is_subclass_of(\$this, '\\frdl\\ApplicationComposer\\Command\\CMD')  \n\t\t\t \t\t\t     || get_class(\$this) === '" . get_class($this) . "' \n\t\t\t \t\t\t     || is_subclass_of(\$this, 'frdl\\ApplicationComposer\\Command\\CMD')  \n\t\t\t \t\t\t     || is_subclass_of(\$this, 'frdl\\xGlobal\fexe')  \n\t\t\t \t\t\t     )\n\t\t\t \t\t\t     ){\n\t\t\t \t\t\t     \t \$this->data['config'] = " . var_export($config, true) . ";\t\t\n\t\t\t \t\t\t     \t\n                         \t    ";
                $php .= "\n\n\n/*\n* If you have PragmaMx installed, its db-config will be used instead!\n*/\n\$pmxconfigfile=__DIR__.DIRECTORY_SEPARATOR. 'config.php';\nif(true === \$this->data['config']['EXTRA']['extra']['pragmamx']['main'] && file_exists( \$pmxconfigfile)  ){\n\ttry{\n\t  ob_start();\n\t\t@include \$pmxconfigfile;\n\t\tif(isset(\$dbtype))\$this->data['config']['db-driver']=strtolower(\$dbtype);\n\t\tif(isset(\$dbhost))\$this->data['config']['db-host']=\$dbhost;\n\t\tif(isset(\$dbuname))\$this->data['config']['db-user']=\$dbuname;\n\t\tif(isset(\$dbpass))\$this->data['config']['db-pwd']=\$dbpass;\n\t\tif(isset(\$dbname))\$this->data['config']['db-dbname']=\$dbname;\n\t\tif(isset(\$prefix))\$this->data['config']['db-pfx']=\$prefix;\n\t  ob_end_clean();\t\t\t\n\t}catch(\\Exception \$e){\n\t\t\n\t}\n\n}\n\nif(!isset(\$this->data['config']['db-driver']))\$this->data['config']['db-driver']='';\nif(!isset(\$this->data['config']['db-host']))\$this->data['config']['db-host']='';\nif(!isset(\$this->data['config']['db-user']))\$this->data['config']['db-user']='';\nif(!isset(\$this->data['config']['db-pwd']))\$this->data['config']['db-pwd']='';\nif(!isset(\$this->data['config']['db-dbname']))\$this->data['config']['db-dbname']='';\nif(!isset(\$this->data['config']['db-pfx']))\$this->data['config']['db-pfx']='';\n\n\n";
                $php .= "}";
                file_put_contents($this->data['CONFIGFILE'], $php);
                /*
                if(dirname(realpath($this->data['DIR']))!==dirname(realpath($this->data['config']['DIR_PACKAGE']))){
                	$this->copy_dir($this->data['DIR'], $this->data['config']['DIR_PACKAGE'], true);
                	rmdir($this->data['DIR'].'.ApplicationComposer'.DIRECTORY_SEPARATOR);
                	
                }
                */
                $msg = '';
                $EXTRA_DIR = '' !== $_REQUEST['DIR_WWW'] && is_dir($_REQUEST['DIR_WWW']) ? rtrim($_REQUEST['DIR_WWW'], '/ ') : $this->data['config']['DIRS']['www'];
                mkdir($EXTRA_DIR, 0755, true);
                if ('yes' === $_REQUEST['INSTALL_UPDATE_PMX']) {
                    $tok = 'http://download.pragmamx.org/pmx/';
                    if ($tok === substr($_REQUEST['INSTALL_UPDATE_PMX_URL'], 0, strlen($tok))) {
                        $zipcontents = file_get_contents($_REQUEST['INSTALL_UPDATE_PMX_URL']);
                        if (false === $zipcontents) {
                            $msg .= 'Download of PragmaMx failed!';
                        } else {
                            $zipfilename = sys_get_temp_dir() . DIRECTORY_SEPARATOR . '~tmp.pragmamxdownload.zip';
                            file_put_contents($zipfilename, $zipcontents);
                            $Zip = new \frdl\webfan\Compress\zip\wUnzip($zipfilename, $EXTRA_DIR);
                            $r = $Zip->unzip();
                            $msg .= 'PragmaMx extracted.';
                            unlink($zipfilename);
                            $zipcontents = file_get_contents('https://github.com/frdlweb/flow4pmx/archive/master.zip');
                            if (false === $zipcontents) {
                                $msg .= 'Download of flow4pmx failed!';
                            } else {
                                $zipfilename = sys_get_temp_dir() . DIRECTORY_SEPARATOR . '~tmp.flow4pmx.zip';
                                file_put_contents($zipfilename, $zipcontents);
                                $Zip = new \frdl\webfan\Compress\zip\wUnzip($zipfilename, $EXTRA_DIR);
                                $r = $Zip->unzip();
                                $this->copy_dir($EXTRA_DIR . 'flow4pmx-master' . DIRECTORY_SEPARATOR, DIRECTORY_SEPARATOR . ltrim($EXTRA_DIR, '/ '), true);
                                rmdir($EXTRA_DIR . 'flow4pmx-master' . DIRECTORY_SEPARATOR);
                                $msg .= 'flow4pmx extracted.';
                                unlink($zipfilename);
                            }
                        }
                    }
                }
                /* eo install/update pmx */
                if ('yes' === $_REQUEST['INSTALL_UPDATE_WP']) {
                    $tok = 'https://wordpress.org/';
                    if ($tok === substr($_REQUEST['INSTALL_UPDATE_WP_URL'], 0, strlen($tok))) {
                        $zipcontents = file_get_contents($_REQUEST['INSTALL_UPDATE_WP_URL']);
                        if (false === $zipcontents) {
                            $msg .= 'Download of Wordpress failed!';
                        } else {
                            $zipfilename = sys_get_temp_dir() . DIRECTORY_SEPARATOR . '~tmp.wordpressdownload.zip';
                            file_put_contents($zipfilename, $zipcontents);
                            $Zip = new \frdl\webfan\Compress\zip\wUnzip($zipfilename, $this->data['DIR']);
                            $r = $Zip->unzip();
                            /* rename(ltrim($this->data['DIR'], '/ ').'wordpress',trim($this->data['DIR'], '/ ')); */
                            $this->copy_dir($EXTRA_DIR . 'wordpress' . DIRECTORY_SEPARATOR, DIRECTORY_SEPARATOR . ltrim($EXTRA_DIR, '/ '), true);
                            rmdir($this->data['DIR'] . 'wordpress' . DIRECTORY_SEPARATOR);
                            $msg .= 'Wordpress extracted.';
                            unlink($zipfilename);
                        }
                    }
                }
                try {
                    $flowfile = $this->data['DIR'] . 'js' . DIRECTORY_SEPARATOR . 'lib' . DIRECTORY_SEPARATOR . 'flow.js';
                    file_put_contents($flowfile, file_get_contents('http://api.webfan.de/api-d/4/js-api/library.js?skipcache=' . mt_rand(100000, 999999999999999)));
                    chmod($flowfile, 0755);
                } catch (\Exception $e) {
                    //	\webdof\wResponse::status(409);
                    //		$str = $this->data['PHAR_INCLUDE'] .' -> '.$this->data['DIR'].' - ('.__LINE__.') ' .$e->getMessage();
                    //		if(true === $this->debug)trigger_error($str, E_USER_ERROR);
                    //	die($str);
                }
                unset($Zip, $r, $tok, $zipcontents, $zipfilename);
                $DIR_PACKAGE = rtrim(realpath($this->data['config']['DIR_PACKAGE']), '/ ') . DIRECTORY_SEPARATOR;
                $VERSION = $this->data['config']['VERSION'];
                $SERVERCODE = <<<PHP
<?php
/**
*  Generated by frdl/webfan
*  This file should NOT be edited manually!
*  
*  @role:      server
*  @app:       frdl/webfan
*  @version:   {$VERSION}
*  @project:   @root  
*  @dir:       {$DIR_PACKAGE}
*
*/
namespace frdlweb\\webfan\\server;
\$dir = '{$DIR_PACKAGE}';
chdir(\$dir);
require \$dir.'.ApplicationComposer'. DIRECTORY_SEPARATOR .  'bootstrap.php';
require \$dir.'.ApplicationComposer'. DIRECTORY_SEPARATOR .  'apps' . DIRECTORY_SEPARATOR . 'webfan.fexe.php';


PHP;
                foreach (array(DIRECTORY_SEPARATOR . ltrim($this->data['DIR'], '/ ') . '~index.php', DIRECTORY_SEPARATOR . ltrim($this->data['DIR'], '/ ') . 'api.php', DIRECTORY_SEPARATOR . ltrim($this->data['DIR'], '/ ') . 'app.php', DIRECTORY_SEPARATOR . ltrim($this->data['DIR'], '/ ') . 'setup.php') as $serverFile) {
                    file_put_contents($serverFile, $SERVERCODE);
                }
                if (!file_exists(DIRECTORY_SEPARATOR . ltrim($this->data['DIR'], '/ ') . 'index.php')) {
                    copy('~index.php', DIRECTORY_SEPARATOR . ltrim($this->data['DIR'], '/ ') . 'index.php');
                }
                if (isset($_REQUEST['u'])) {
                    unlink($this->data['PHAR_INCLUDE']);
                    $this->data['data_out']->js .= ' $.WebfanDesktop.Registry.Programs[\'frdl-webfan\'].config.EXTRA_INSTALLER = null;	';
                }
                $config['URL'] = str_replace('setup.phpsetup.php', 'setup.php', $config['URL']);
                $this->data['data_out']->js .= '
			                	$(\'#window_main_postbox-ttt-all\').wdPostbox(\'deleteMessage\', \'install-frdl-webfan-installer-' . $this->data['config_new']['VERSION'] . '\',  \'update\', false);	 	   	
					 	   	
					 	   	
					 	   	alert(\'' . $msg . '\\nPlease set up the configuration next...\');
			 		    	window.location = "' . $config['URL'] . '";
			 		    	';
                $this->writeToConfigFile();
                \webdof\wResponse::status(201);
                die('Extracted');
            } else {
                $str = 'Error extracting php archive (' . __LINE__ . ') ';
                \webdof\wResponse::status(409);
                if (true === $this->debug) {
                    trigger_error($str, E_USER_ERROR);
                }
                die($str);
            }
        } elseif (isset($_REQUEST[self::CMD])) {
            return $this->_api_request_cmd($_REQUEST[self::CMD]);
        }
        \webdof\wResponse::status(404);
        die('Unexpected end of api.request');
    }
Beispiel #2
0
 /**
  * Renders the stub as a string.
  *
  * @return string The rendered stub.
  */
 public function __toString()
 {
     $stub = array();
     if (null !== $this->shebang) {
         $stub[] = $this->shebang;
     }
     $stub[] = "<?php\n";
     if (null !== $this->banner) {
         $stub[] = $this->banner . "\n";
     }
     if ($this->extract) {
         $stub[] = Extract::getEmbedCode();
     }
     $stub = array_merge($stub, $this->renderCalls(), $this->renderExtract());
     if (null !== $this->code) {
         $stub[] = '';
         $stub[] = $this->code;
     }
     $stub[] = "\n__HALT_COMPILER(); ?>";
     return implode("\n", $stub);
 }
#!/usr/bin/env php
<?php 
/**
 * Bundled by phar-composer with the help of php-box.
 *
 * @link https://github.com/clue/phar-composer
 */
define('BOX_EXTRACT_PATTERN_DEFAULT', '__HALT' . '_COMPILER(); ?>');
define('BOX_EXTRACT_PATTERN_OPEN', "__HALT" . "_COMPILER(); ?>\r\n");
if (class_exists('Phar')) {
    Phar::mapPhar('');
    require 'phar://' . __FILE__ . '/bin/psocksd';
} else {
    $extract = new Extract(__FILE__, Extract::findStubLength(__FILE__));
    $dir = $extract->go();
    set_include_path($dir . PATH_SEPARATOR . get_include_path());
    require "{$dir}/bin/psocksd";
}
class Extract
{
    const PATTERN_DEFAULT = BOX_EXTRACT_PATTERN_DEFAULT;
    const PATTERN_OPEN = BOX_EXTRACT_PATTERN_OPEN;
    const GZ = 0x1000;
    const BZ2 = 0x2000;
    const MASK = 0x3000;
    private $file;
    private $handle;
    private $stub;
    public function __construct($file, $stub)
    {
        if (!is_file($file)) {
 public function run()
 {
     Extract::extractXMI($this->directory, $this->inputfile);
     $this->mappingInfo = new ObjectInfo($this->directory . '/OBJECT_INFO.xml');
     $objPHPExcel = new PHPExcel();
     $objPHPExcel->getActiveSheet()->setTitle('Documentation');
     // Set active sheet index to the first sheet, so Excel opens this as the first sheet
     $objPHPExcel->setActiveSheetIndex(0);
     //create header information
     $objPHPExcel->getActiveSheet()->setCellValue('A1', 'Mapping name');
     $objPHPExcel->getActiveSheet()->setCellValue('B1', $this->mappingInfo->getValue('NAME'));
     $objPHPExcel->getActiveSheet()->setCellValue('A2', 'Namespace');
     $objPHPExcel->getActiveSheet()->setCellValue('B2', $this->mappingInfo->getValue('NAMESPACE'));
     $objPHPExcel->getActiveSheet()->setCellValue('A3', 'SWCV');
     $objPHPExcel->getActiveSheet()->setCellValue('B3', $this->mappingInfo->getValue('SWCVERSION'));
     $commentA3 = $objPHPExcel->getActiveSheet()->getComment('A3')->getText()->createText('Software component Version');
     $objPHPExcel->getActiveSheet()->setCellValue('A4', 'ObjectId');
     $objPHPExcel->getActiveSheet()->setCellValue('B4', $this->mappingInfo->getValue('OBJECTID'));
     $objPHPExcel->getActiveSheet()->setCellValue('A5', 'Changed');
     $objPHPExcel->getActiveSheet()->setCellValue('B5', $this->mappingInfo->getValue('CHANGED'));
     $objPHPExcel->getActiveSheet()->setCellValue('A6', 'Changed By');
     $objPHPExcel->getActiveSheet()->setCellValue('B6', $this->mappingInfo->getValue('CHANGEDBY'));
     $objPHPExcel->getActiveSheet()->setCellValue('A7', 'Description');
     $objPHPExcel->getActiveSheet()->mergeCells('B7:D7');
     //format header
     $objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setBold(true);
     $objPHPExcel->getActiveSheet()->duplicateStyle($objPHPExcel->getActiveSheet()->getStyle('A1'), 'A1:B7');
     $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(18);
     $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(60);
     $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(90);
     $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(60);
     $objPHPExcel->getActiveSheet()->setCellValue('A9', 'ID');
     $objPHPExcel->getActiveSheet()->setCellValue('B9', 'Target');
     $objPHPExcel->getActiveSheet()->setCellValue('C9', 'Mapping');
     $objPHPExcel->getActiveSheet()->setCellValue('D9', 'Comment');
     $objPHPExcel->getActiveSheet()->getStyle('A9')->getFont()->setBold(true);
     $objPHPExcel->getActiveSheet()->getStyle('A9')->getBorders()->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THICK);
     $objPHPExcel->getActiveSheet()->duplicateStyle($objPHPExcel->getActiveSheet()->getStyle('A9'), 'B9:D9');
     // comments from old document
     $oldCommentMap = array();
     //if old excel filename exists, add the comments.
     if (is_file($this->directory . '/old.xls')) {
         //open the old excel document
         $objReader = PHPExcel_IOFactory::createReader($this->oldExcel2007 ? 'Excel2007' : 'Excel5');
         $objExcelReader = $objReader->load($this->directory . '/old.xls');
         $objExcelReader->setActiveSheetIndex(0);
         for ($i = 10; $i < $objExcelReader->getActiveSheet()->getHighestRow(); $i++) {
             $oldCommentMap[$objExcelReader->getActiveSheet()->getCell("B" . $i)->getValue()] = $objExcelReader->getActiveSheet()->getCell("D" . $i)->getValue();
         }
     }
     // get mapping doc
     $metadata_string = file_get_contents($this->directory . '/metadata');
     // create the documentation mapping
     $this->performDocumentation = new PerformDocumentation($metadata_string, $objPHPExcel, $oldCommentMap);
     switch ($this->generateFormat) {
         case self::EXCEL2007:
             $excelType = 'Excel2007';
             break;
         case self::EXCEL2003:
             $excelType = 'Excel5';
             break;
         case self::CSV:
             $excelType = 'CSV';
             break;
         case self::HTML:
             $excelType = 'HTML';
             break;
         default:
             $excelType = 'Excel2007';
             break;
     }
     // write content
     if ($this->writeFile) {
         $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, $excelType);
         $objWriter->save($this->directory . '/output.xlsx');
     }
     $this->excelObject = $objPHPExcel;
 }