/** * Returns the message stored for the key as a html paragraph. * @param string $key * @return string $message */ public function message($key) { $model = new Core_Model_Messages(); $row = $model->getResource()->fetchRow(array('where' => array('`key` = ?' => $key))); if (empty($row)) { return ''; } else { return '<p>' . $row['value'] . '</p>'; } }
/** * Initializes the database with the init data for the config module. */ public function init() { // create config entries $configModel = new Core_Model_Config(); if ($configModel->getResource()->countRows() == 0) { $entries = array(); $this->_buildConfigEntries_r($entries, $this->_init->options['config'], array()); foreach ($entries as $key => $value) { $a = array('key' => $key, 'value' => $value); $r = $configModel->create($a); $this->_check($r, $a); } } // create templates $templatesModel = new Core_Model_Templates(); if ($templatesModel->getResource()->countRows() == 0) { foreach ($this->_init->options['init']['templates'] as $key => $value) { $a = array('template' => $key, 'subject' => $value['subject'], 'body' => $value['body']); $r = $templatesModel->create($a); $this->_check($r, $a); } } // create messages $messagesModel = new Core_Model_Messages(); if ($messagesModel->getResource()->countRows() == 0) { foreach ($this->_init->options['init']['messages'] as $key => $value) { $a = array('key' => $key, 'value' => $value); $r = $messagesModel->create($a); $this->_check($r, $a); } } }
/** * Returns the message, the database information, and the jobs for the current user. * @return array $response */ public function index() { // set job resource $this->setResource(Query_Model_Resource_AbstractQuery::factory()); // get the current query message $messagesModel = new Core_Model_Messages(); $row = $messagesModel->getResource()->fetchRow(array('where' => array('`key` = "query"'))); if (empty($row)) { $message = false; } else { $message = $row['value']; } // get the sqloptions needed to show the list of jobs $userId = Daiquiri_Auth::getInstance()->getCurrentId(); // get rows and return $rows = array(); try { $dbRows = $this->getResource()->fetchRows(array('where' => array('user_id = ?' => $userId, 'status_id != ?' => $this->getResource()->getStatusId('removed')), 'order' => array($this->getResource()->getTimeField() . ' DESC'), 'limit' => 1000)); } catch (Exception $e) { $dbRows = array(); } foreach ($dbRows as $dbRow) { $row = array(); foreach (array('id', 'table', 'status') as $col) { $row[$col] = $dbRow[$col]; } $row['time'] = $dbRow[$this->getResource()->getTimeField()]; $rows[] = $row; } // get number of currently active jobs $resourceClass = get_class($this->getResource()); if ($resourceClass::$hasQueues) { try { $nactive = $this->getResource()->fetchNActive(); } catch (Exception $e) { $nactive = false; } } else { $nactive = false; } // check if guest or not $guest = Daiquiri_Auth::getInstance()->getCurrentRole() === 'guest'; // get the quota information $usrGrp = Daiquiri_Auth::getInstance()->getCurrentRole(); if ($usrGrp !== null) { $quota = array(); // get database stats try { $stats = $this->getResource()->fetchDatabaseStats(); } catch (Exception $e) { $stats = array(); } // get the quota space $quota['max'] = Daiquiri_Config::getInstance()->query->quota->{$usrGrp}; if (!empty($stats)) { // space in byte $usedSpace = (double) $stats['db_size']; // parse the quota to resolve KB, MB, GB, TB, PB, EB... preg_match("/([0-9.]+)\\s*([KMGTPEBkmgtpeb]*)/", $quota['max'], $parse); $quotaSpace = (double) $parse[1]; $unit = $parse[2]; switch (strtoupper($unit)) { case 'EB': $quotaSpace *= 1024; case 'PB': $quotaSpace *= 1024; case 'TB': $quotaSpace *= 1024; case 'GB': $quotaSpace *= 1024; case 'MB': $quotaSpace *= 1024; case 'KB': $quotaSpace *= 1024; default: break; } if ($usedSpace > $quotaSpace) { $quota['exceeded'] = true; } else { $quota['exceeded'] = false; } $unit = ' byte'; foreach (array('KB', 'MB', 'GB', 'TB', 'PB', 'EB') as $u) { if ($usedSpace > 1024) { $usedSpace /= 1024.0; $unit = $u; } } $quota['used'] = (string) floor($usedSpace * 100) / 100 . ' ' . $unit; } else { $quota['used'] = '?'; } } else { $quota = false; } return array('status' => 'ok', 'jobs' => $rows, 'database' => array('message' => $message, 'nactive' => $nactive, 'guest' => $guest, 'quota' => $quota)); }