Example #1
0
 /**
  * @param array $actionlist
  */
 function dispatch($actionlist)
 {
     require_once CLASSES . 'VoodooSetup.php';
     if (!count($actionlist)) {
         // Dont do anything
         return $this->login();
     }
     $args = array('prepath' => PATH_TO_DOCROOT);
     $showCredentials = (bool) $this->conf['setup']['insecure_sql_execution'];
     switch ($actionlist[0]) {
         // The first admin to be created is the God Admin
         case 'CreateAdmin':
             return $this->createAdmin();
             break;
         case 'Login':
             return $this->login();
             break;
         case 'conf':
             if (!$this->hasRights($_SESSION['access'], 'conf', 'view')) {
                 return VoodooPrivileges::displayError('Permission Denied');
             }
             $use_conf = '';
             if (isset($_REQUEST['conf'])) {
                 $use_conf = $_REQUEST['conf'];
             }
             $template =& VoodooTemplate::getInstance();
             $template->setDir(ADMIN_TEMPLATES);
             $conf = VoodooIni::load('voodoo');
             $vars = array('prepath' => PATH_TO_DOCROOT, 'controllers' => array());
             foreach ($conf['controllers'] as $controller => $enabled) {
                 $enabled && ($vars['controllers'][] = array('name' => $controller, 'selected' => $use_conf == $controller ? ' selected="selected" ' : ''));
             }
             if ($conf['controllers'][$use_conf]) {
                 $vars['conf'] = $use_conf;
                 $vars['configuration'] = VoodooIni::getContent($use_conf);
                 if ($this->hasRights($_SESSION['access'], 'conf', 'modify')) {
                     $vars['buttons'] = '<input type="submit" name="save" value="Save Configuration" />';
                 }
             }
             return array('Configuration files', $template->parse('conf.modify', $vars));
             break;
         case 'Init':
             $complete = false;
             $cnames = array();
             $controllers = $this->controller->voodooConf['controllers'];
             foreach ($controllers as $controller => $enabled) {
                 $enabled && ($cnames[] = ucfirst($controller));
             }
             if (!$showCredentials || !isset($_POST['dbcredentials'])) {
                 $args['action'] = 'Init';
                 $template =& VoodooTemplate::getInstance();
                 $template->setDir(ADMIN_TEMPLATES);
                 $output = ($showCredentials ? $template->parse('credentials', $args) : '') . '<strong>SQL Output</strong><pre class="MonospaceFormat">';
                 if (!$this->controller->voodooConf['engine']['site.setup']) {
                     $obj = new VoodooSetup(false, $this->controller->conf);
                     $obj->setup();
                     $output .= $obj->displaySQL();
                 }
                 foreach ($cnames as $cname) {
                     $output .= $this->controllerSetup($cname);
                 }
                 return array('SQL Output For VOODOO', $output . '</pre>');
             }
             if (!$this->controller->voodooConf['engine']['site.setup']) {
                 $obj = new VoodooSetup($_POST['dbcredentials'], $this->controller->conf);
                 $complete || ($complete = $obj->setup());
             }
             foreach ($cnames as $cname) {
                 $this->controllerSetup($cname, $_POST['dbcredentials']);
             }
             header('Location: ' . PATH_TO_DOCROOT . ($complete ? '/' : '/setup/CreateAdmin'));
             exit;
             break;
         case 'Controller':
             if (count($actionlist) != 2) {
                 exit('Incorrect Setup Of Controller');
             }
             $cname = ucfirst(strtolower($actionlist[1]));
             if (!$showCredentials || !isset($_POST['dbcredentials'])) {
                 $args['action'] = 'Init';
                 $template =& VoodooTemplate::getInstance();
                 $template->setDir(ADMIN_TEMPLATES);
                 $output = ($showCredentials ? $template->parse('credentials', $args) : '') . '<strong>SQL Output</strong><pre class="MonospaceFormat">';
                 return array('SQL Output For ' . $cname, $output . $this->controllerSetup($cname) . '</pre>');
             }
             $this->controllerSetup($cname, $_POST['dbcredentials']);
             header('Location: ' . PATH_TO_DOCROOT . '/');
             exit;
             break;
     }
 }