public function indexAction() { $this->view->status = 'ok'; // get the csrf token $session = new Zend_Session_Namespace('csrf'); $csrf = $session->hash; // get the forms to display $options = array('defaultForm' => Null, 'polling' => Daiquiri_Config::getInstance()->query->polling->toArray(), 'forms' => array(), 'csrf' => $csrf); foreach (Daiquiri_Config::getInstance()->query->forms as $key => $form) { if ($form->default) { $options['defaultForm'] = $key; } $options['forms'][] = array('key' => $key, 'title' => $form->title); } $this->view->options = $options; // get options for the query plan $queryModel = new Query_Model_Query(); $this->view->plan = array('enabled' => $queryModel->canShowPlan(), 'editable' => $queryModel->canAlterPlan(), 'mail' => Daiquiri_Config::getInstance()->query->processor->mail->enabled); // get the different download options $this->view->downloadAdapter = Daiquiri_Config::getInstance()->getQueryDownloadAdapter(); // check if imageviewer is enabled if (Daiquiri_Config::getInstance()->query->images->enabled) { $this->view->images = true; } else { $this->view->images = false; } // check if the table cols/rows should be selectable if (Daiquiri_Config::getInstance()->query->results->select) { $this->view->select = true; } else { $this->view->select = false; } // check if samp is enabled if (Daiquiri_Config::getInstance()->query->samp->enabled && Daiquiri_Auth::getInstance()->getCurrentUsername() !== 'guest') { $this->view->samp = true; } else { $this->view->samp = false; } // check if plot is enabled if (Daiquiri_Config::getInstance()->query->plot->enabled) { $this->view->plot = true; } else { $this->view->plot = false; } }
/** * Submits a new query query plan to the database. * @param string $mail * @param array $formParams * @return array $response */ public function plan($mail = null, array $formParams = array()) { // get query, tablename and queue from session $ns = new Zend_Session_Namespace('query_plan'); // get query model $model = new Query_Model_Query(); // format plan if (empty($ns->plan)) { $outString = "No query plan returned..."; } else { $outString = ""; foreach ($ns->plan as $line) { $outString .= $line . "\n"; } } // get the form for the plan $form = new Query_Form_Plan(array('query' => $outString, 'editable' => $model->canAlterPlan(), 'mail' => Daiquiri_Config::getInstance()->query->processor->mail->enabled)); // init errors array $errors = array(); // validate form if (!empty($formParams)) { if ($form->isValid($formParams)) { // get values $values = $form->getValues(); if ($model->canAlterPlan()) { // get new plan from form $plan = $values['plan_query']; // validate query plus plan if ($model->validate($ns->sql, $plan, $ns->tablename, $errors) !== true) { if (!empty($errors)) { return $this->getModelHelper('CRUD')->validationErrorResponse($form, $errors); } } } else { $plan = false; } if (empty($mail)) { // submit query $response = $model->query($ns->sql, $plan, $ns->tablename, array("queue" => $ns->queue)); if ($response['status'] === 'ok') { return $response; } else { return $this->getModelHelper('CRUD')->validationErrorResponse($form, $response['errors']); } } else { // store plan in session if ($plan !== false) { $ns->planString = $plan; } else { $ns->planString = implode('\\n', $ns->plan); } // redirect to mail controller action and return $baseurl = Daiquiri_Config::getInstance()->getSiteUrl(); return array('status' => 'redirect', 'redirect' => $baseurl . '/query/form/mail'); } } else { return $this->getModelHelper('CRUD')->validationErrorResponse($form, $errors); } } return array('form' => $form, 'status' => 'form', 'query' => $outString); }