コード例 #1
0
ファイル: build.php プロジェクト: gpawlik/suited-php-classes
/**
 * build source package with more simple form of install. 
 * @param array $options
 */
function cos_build_simple($options = null)
{
    $dir = getcwd();
    $name = basename($dir);
    if (file_exists("./build/{$name}")) {
        common::execCommand("sudo rm -rf ./build/{$name}*");
    }
    common::execCommand("mkdir ./build/{$name}");
    $htdocs = "cp -rf htdocs/* ./build/{$name}";
    common::execCommand($htdocs);
    $domain = conf::getMainIni('domain');
    if (!$domain) {
        $domain = 'default';
    }
    $files_rm = "sudo rm -rf ./build/{$name}/files/{$domain}/*";
    common::execCommand($files_rm);
    $config = "mkdir ./build/{$name}/config";
    common::execCommand($config);
    $tmp_dir = "mkdir ./build/{$name}/tmp";
    common::execCommand($tmp_dir);
    $profiles = "cp -rf profiles ./build/{$name}";
    common::execCommand($profiles);
    $sql_scripts = "cp -rf scripts ./build/{$name}";
    common::execCommand($sql_scripts);
    $cli = "cp -rf coscli.sh ./build/{$name}";
    common::execCommand($cli);
    $composer = "cp -rf composer.json ./build/{$name}";
    common::execCommand($composer);
    // reset database password
    $ary = conf::getIniFileArray("./config/config.ini");
    $profile = new profile();
    $ary = $profile->iniArrayPrepare($ary);
    // clean ini settings for secrets
    $ini_settings = conf::arrayToIniFile($ary);
    // add ini dist file
    file_put_contents("./build/{$name}/config/config.ini-dist", $ini_settings);
    $index = "cp -rf htdocs/index.php ./build/{$name}/index.php";
    common::execCommand($index);
    $phar_cli = "cp -rf phar-cli.php ./build/{$name}/";
    common::execCommand($phar_cli);
    $phar_web = "cp -rf phar-web.php ./build/{$name}/";
    common::execCommand($phar_web);
    $module_dir = conf::pathModules();
    $modules = "cp -rf {$module_dir} ./build/{$name}";
    common::execCommand($modules);
    $vendor = "cp -rf vendor ./build/{$name}";
    common::execCommand($vendor);
    $rm_git = "rm `find ./build/{$name} -name '.git'` -rf";
    common::execCommand($rm_git);
    $rm_ignore = "rm `find ./build/{$name} -name '.gitignore'` -rf";
    common::execCommand($rm_ignore);
    $rm_doc = "rm -rf ./build/vendor/doc";
    common::execCommand($rm_doc);
    $output = array();
    exec('git tag -l', $output);
    $version = array_pop($output);
    $command = "cd  ./build && tar -Pczf {$name}-{$version}.tar.gz {$name} ";
    common::execCommand($command);
}
コード例 #2
0
ファイル: heroku.php プロジェクト: gpawlik/suited-php-classes
/**
 * set csendgrid config in config.ini
 */
function heroku_set_sendgrid_conf()
{
    $user = heroku_get_setting('SENDGRID_USERNAME');
    $pass = heroku_get_setting('SENDGRID_PASSWORD');
    if ($user && $pass) {
        $config_file = heroku_get_config_filename();
        conf::$vars['coscms_main'] = conf::getIniFileArray($config_file, true);
        $from_text = common::readSingleline('Enter which from text should be seen in his inbx, e.g. CosCMS (not the email)');
        $reply = common::readSingleline('Enter which email users should reply to (an email):');
        conf::$vars['coscms_main']['site_email'] = "{$from_text} <{$user}>";
        conf::$vars['coscms_main']['site_email_reply'] = "{$from_text} <{$reply}>";
        conf::$vars['coscms_main']['smtp_params_host'] = "smtp.sendgrid.net";
        conf::$vars['coscms_main']['smtp_params_sender'] = $user;
        conf::$vars['coscms_main']['smtp_params_username'] = $user;
        conf::$vars['coscms_main']['smtp_params_password'] = $pass;
        conf::$vars['coscms_main']['smtp_params_auth'] = "true";
        conf::$vars['coscms_main']['smtp_params_port'] = 587;
        $content = conf::arrayToIniFile(conf::$vars['coscms_main'], false);
        $path = conf::pathBase() . "/config/config.ini";
        file_put_contents($path, $content);
    }
}
コード例 #3
0
 /**
  * Method for creating a main config.ini file
  * @param string $profile name of the profile
  */
 private function createConfigIni($profile)
 {
     $profile_dir = conf::pathBase() . "/profiles/{$profile}";
     $source = conf::pathBase() . "/config/config.ini";
     $ary = conf::getIniFileArray($source, true);
     unset($ary['base_path'], $ary['htdocs_path'], $ary['modules_dir'], $ary['modules_path'], $ary['files_dir']);
     $ary = $this->iniArrayPrepare($ary);
     $config_str = conf::arrayToIniFile($ary);
     file_put_contents($profile_dir . "/config.ini-dist", $config_str);
 }
コード例 #4
0
/**
 * function for updating a modules .ini file with new settings
 * from updated ini-dist file.
 *  
 * @param array     $options 
 */
function upgrade_config_ini_file($options)
{
    $ini_file_path = conf::pathBase() . "/config/config.ini";
    $ini_dist_path = conf::pathBase() . "/profiles/{$options['profile']}/config.ini-dist";
    $ini_file = conf::getIniFileArray($ini_file_path, true);
    $ini_dist = conf::getIniFileArray($ini_dist_path, true);
    $ary = array_merge($ini_dist, $ini_file);
    $ary_diff = array_diff($ary, $ini_file);
    $content = conf::arrayToIniFile($ary);
    file_put_contents($ini_file_path, $content);
    if (empty($ary_diff)) {
        common::echoMessage("No new ini file settings for config.ini");
    } else {
        $new_settings_str = conf::arrayToIniFile($ary_diff);
        common::echoMessage("New ini file written to: {$ini_file_path}");
        common::echoMessage("These are the new ini settings for config.ini");
        common::echoMessage(trim($new_settings_str));
    }
}
コード例 #5
0
ファイル: phar.php プロジェクト: gpawlik/suited-php-classes
function cos_phar_web_create()
{
    // move sources to build dir.
    // e.g. build/coscms
    cos_build_simple();
    // some base values
    $dir = getcwd();
    $base = basename($dir);
    // dir we build phar from
    $build_from_dir = "{$dir}/build/{$base}";
    // when creating a web phar we add
    // config.ini
    // this is done so that on first exectution of the
    // phar archive we will create this file and a .sqlite database.
    $build_phar_dir = "build/phar";
    if (!file_exists($build_phar_dir)) {
        common::execCommand("mkdir {$build_phar_dir}");
    }
    // hidden .config file
    // cos_exec("cp -f config/config.ini $build_from_dir/tmp/.config.ini");
    // reset database password
    $ary = conf::getIniFileArray("./config/config.ini");
    $profile = new profile();
    // rm secrets
    $ary = $profile->iniArrayPrepare($ary);
    // add sqlite database to build phar dir
    if (conf::getMainIni('phar_sqlite')) {
        db_to_sqlite();
        // mv sqlite database into hidden file
        common::execCommand("cp -R sqlite/database.sql {$build_from_dir}/tmp/.database.sql");
        common::execCommand("chmod 777 {$build_from_dir}/tmp/.database.sql");
        common::execCommand("mkdir {$build_from_dir}/sqlite");
        unset($ary['db_init']);
        $ary['url'] = 'sqlite:.database.sql';
    }
    // no caching of assets. Place css and js in file
    $ary['cached_assets'] = 0;
    $ary['cashed_assets_reload'] = 0;
    $ary['cached_assets_minify'] = 0;
    $ary['cached_assets_compress'] = 0;
    $ary['cached_assets_inline'] = 1;
    if (conf::getMainIni('phar_files')) {
        common::execCommand("cp -rf htdocs/files {$build_from_dir}");
        common::execCommand("sudo chown -R 777 {$build_from_dir}/files");
    }
    $ini_settings = conf::arrayToIniFile($ary);
    file_put_contents("{$build_from_dir}/tmp/.config.ini", $ini_settings);
    chdir($build_phar_dir);
    $output = "{$base}-web.phar";
    $phar = new Phar($output);
    $phar->buildFromDirectory($build_from_dir);
    $stub = $phar->createDefaultStub('phar-web.php', 'phar-web.php');
    $phar->setStub($stub);
    $phar->stopBuffering();
    echo "Web phar executable file created from current source ({$output})\n";
    echo "Serve it e.g. with the built-in server. Like this:\n";
    echo "cd {$build_phar_dir}\n";
    echo "php -S localhost:8080 {$base}-web.phar\n";
    exit(0);
}
コード例 #6
0
/**
 * function for doing a prompt install from shell mode
 * is a wrapper around other shell functions.
 */
function prompt_install()
{
    common::echoMessage('Pick a version to install:', 'y');
    $tags = git::getTagsInstallLatest() . PHP_EOL;
    $tags .= "master";
    common::echoMessage($tags);
    $tag = common::readSingleline("Enter tag (version) to use:");
    common::execCommand("git checkout {$tag}");
    // Which profile to install
    $profiles = file::getFileList('profiles', array('dir_only' => true));
    if (count($profiles) == 1) {
        $profile = array_pop($profiles);
    } else {
        common::echoMessage("List of profiles: ");
        foreach ($profiles as $val) {
            common::echoMessage("\t" . $val);
        }
        // select profile and load it
        $profile = common::readSingleline('Enter profile, and hit return: ');
    }
    common::echoMessage("Loading the profile '{$profile}'", 'y');
    load_profile(array('profile' => $profile, 'config_only' => true));
    common::echoMessage("Main configuration (placed in config/config.ini) for '{$profile}' is loaded", 'y');
    // Keep base path. Ortherwise we will lose it when loading profile
    $base_path = conf::pathBase();
    // Load the default config.ini settings as a skeleton
    conf::$vars['coscms_main'] = conf::getIniFileArray($base_path . '/config/config.ini', true);
    // Reset base path
    conf::setMainIni('base_path', $base_path);
    conf::defineCommon();
    common::echoMessage("Enter MySQL credentials", 'y');
    // Get configuration info
    $host = common::readSingleline('Enter your MySQL host: ');
    $database = common::readSingleline('Enter database name: ');
    $username = common::readSingleline('Enter database user: '******'Enter database users password: '******'Enter server host name: ');
    common::echoMessage("Writing database connection info to main configuration");
    // Assemble configuration info
    conf::$vars['coscms_main']['url'] = "mysql:dbname={$database};host={$host};charset=utf8";
    conf::$vars['coscms_main']['username'] = $username;
    conf::$vars['coscms_main']['password'] = $password;
    conf::$vars['coscms_main']['server_name'] = $server_name;
    // Write it to ini file
    $content = conf::arrayToIniFile(conf::$vars['coscms_main'], false);
    $path = conf::pathBase() . "/config/config.ini";
    file_put_contents($path, $content);
    common::echoMessage("Your can also always change the config/config.ini file manually");
    $options = array();
    $options['profile'] = $profile;
    if ($tag == 'master') {
        $options['master'] = true;
    }
    common::echoMessage("Will now clone and install all modules", 'y');
    cos_install($options);
    common::echoMessage("Create a super user", 'y');
    useradd_add();
    $login = "******";
    common::echoMessage("If there was no errors you will be able to login at {$login}");
    common::echoMessage("Remember to change file permissions. This will require super user");
    common::echoMessage("E.g. like this:");
    common::echoMessage("sudo ./coscli.sh file --chmod-files");
}
コード例 #7
0
ファイル: module.php プロジェクト: gpawlik/suited-php-classes
/**
 * function for updating a modules .ini file with new settings
 * from updated ini-dist file.
 *  
 * @param array     $options 
 */
function update_ini_file($options)
{
    if (!isset($options['module'])) {
        echo "Specify module\n";
        exit(1);
    }
    $ini_file_path = conf::pathModules() . "/{$options['module']}/{$options['module']}.ini";
    $ini_dist_path = $ini_file_path . "-dist";
    $ini_file = conf::getIniFileArray($ini_file_path);
    $ini_dist = conf::getIniFileArray($ini_dist_path);
    $new_settings = array();
    foreach ($ini_dist as $key => $val) {
        if (!isset($ini_file[$key])) {
            $ini_file[$key] = $val;
            // used for displaying which settings were updated.
            $new_settings[$key] = $val;
        }
    }
    // write it to ini file
    $content = conf::arrayToIniFile($ini_file);
    file_put_contents($ini_file_path, $content);
    // install profile.
    if (!empty($new_settings)) {
        $new_settings_str = conf::arrayToIniFile($new_settings);
        common::echoMessage("New ini file written with updated settings: {$ini_file_path}");
        common::echoMessage("These are the new ini settings for module {$options['module']}:");
        common::echoMessage(trim($new_settings_str));
    }
}