Contao\Config::save PHP Method

save() public method

Save the local configuration file
public save ( )
    public function save()
    {
        if ($this->strTop == '') {
            $this->strTop = '<?php';
        }
        $strFile = trim($this->strTop) . "\n\n";
        $strFile .= "### INSTALL SCRIPT START ###\n";
        foreach ($this->arrData as $k => $v) {
            $strFile .= "{$k} = {$v}\n";
        }
        $strFile .= "### INSTALL SCRIPT STOP ###\n";
        $this->strBottom = trim($this->strBottom);
        if ($this->strBottom != '') {
            $strFile .= "\n" . $this->strBottom . "\n";
        }
        $strTemp = md5(uniqid(mt_rand(), true));
        // Write to a temp file first
        $objFile = fopen(TL_ROOT . '/system/tmp/' . $strTemp, 'wb');
        fputs($objFile, $strFile);
        fclose($objFile);
        // Make sure the file has been written (see #4483)
        if (!filesize(TL_ROOT . '/system/tmp/' . $strTemp)) {
            \System::log('The local configuration file could not be written. Have your reached your quota limit?', __METHOD__, TL_ERROR);
            return;
        }
        // Adjust the file permissions (see #8178)
        $this->Files->chmod('system/tmp/' . $strTemp, \Config::get('defaultFileChmod'));
        // Then move the file to its final destination
        $this->Files->rename('system/tmp/' . $strTemp, 'system/config/localconfig.php');
        // Reset the Zend OPcache
        if (function_exists('opcache_invalidate')) {
            opcache_invalidate(TL_ROOT . '/system/config/localconfig.php', true);
        }
        // Reset the Zend Optimizer+ cache (unfortunately no API to delete just a single file)
        if (function_exists('accelerator_reset')) {
            accelerator_reset();
        }
        // Recompile the APC file (thanks to Trenker)
        if (function_exists('apc_compile_file') && !ini_get('apc.stat')) {
            apc_compile_file(TL_ROOT . '/system/config/localconfig.php');
        }
        // Purge the eAccelerator cache (thanks to Trenker)
        if (function_exists('eaccelerator_purge') && !ini_get('eaccelerator.check_mtime')) {
            @eaccelerator_purge();
        }
        // Purge the XCache cache (thanks to Trenker)
        if (function_exists('xcache_count') && !ini_get('xcache.stat')) {
            if (($count = xcache_count(XC_TYPE_PHP)) > 0) {
                for ($id = 0; $id < $count; $id++) {
                    xcache_clear_cache(XC_TYPE_PHP, $id);
                }
            }
        }
        $this->blnIsModified = false;
    }

Usage Example

Ejemplo n.º 1
0
 /**
  * Saves the local configuration file.
  */
 public function save()
 {
     $this->config->save();
 }