예제 #1
0
 /**
  * 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>';
     }
 }
예제 #2
0
파일: Init.php 프로젝트: vrtulka23/daiquiri
 /**
  * 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);
         }
     }
 }
예제 #3
0
 /**
  * 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));
 }