View file install/controllers/SettingsController.php

File size: 2.16Kb
<?php
/**
 * SocialEngine
 *
 * @category   Application_Core
 * @package    Install
 * @copyright  Copyright 2006-2020 Webligo Developments
 * @license    http://www.socialengine.com/license/
 * @version    $Id: SettingsController.php 9747 2012-07-26 02:08:08Z john $
 * @author     John
 */

/**
 * @category   Application_Core
 * @package    Install
 * @copyright  Copyright 2006-2020 Webligo Developments
 * @license    http://www.socialengine.com/license/
 */
class SettingsController extends Zend_Controller_Action
{
  public function init()
  {
    // Check if already logged in
    if( !Zend_Registry::get('Zend_Auth')->getIdentity() ) {
      return $this->_helper->redirector->gotoRoute(array(), 'default', true);
    }

    // Check if related folders are writeable
    if( !is_writeable(APPLICATION_PATH . '/install/config') ) {
      throw new Engine_Exception('install/config folder is not writeable');
    }
    
    // Add manage socialengine title
    $this->view->headTitle()->prepend('Manage SocialEngine');

    // Create navigation
    $this->view->navigation = new Zend_Navigation(array(
      array(
        'label' => 'Manage Packages',
        'route' => 'manage',
      ),
      array(
        'label' => 'Install Packages',
        'route' => 'manage',
        'action' => 'select',
      ),
      array(
        'label' => 'Logout',
        'route' => 'logout',
      ),
    ));
  }

  public function indexAction()
  {
    $filename = APPLICATION_PATH . '/install/config/general.php';
    $this->view->form = $form = new Install_Form_Settings_General();

    if( !$this->getRequest()->isPost() ) {
      ob_start();
      $config = include $filename;
      ob_end_clean();

      if( is_array($config) ) {
        $form->populate($config);
      }
      return;
    }
    
    if( !$form->isValid($this->getRequest()->getPost()) ) {
      return;
    }

    if( (file_exists($filename) && !is_writable($filename)) || (!file_exists($filename) && !is_writable(dirname($filename))) ) {
      $form->addError('Config file ' . $filename . ' is not writable');
      return;
    }

    file_put_contents($filename, '<?php return ' . var_export($form->getValues(), true) . '; ?>');
  }
}