Marius Burkard
2016-04-20 4569cae57f127afd093794310ccd290d2d9fdf36
server/lib/classes/cron.d/100-monitor_database_size.inc.php
@@ -77,38 +77,48 @@
      /** The state of the database-usage */
      $state = 'ok';
      /** Fetch the data of all active databases into an array */
      $records = $app->db->queryAllRecords("SELECT database_name, sys_groupid FROM web_database WHERE server_id = $server_id AND active='y' GROUP BY sys_groupid, database_name ASC");
      if(is_array($records) && !empty($records)) {
      /** Fetch the data of all databases into an array */
      $databases = $app->db->queryAllRecords("SELECT database_id, database_name, sys_groupid, database_quota, quota_exceeded FROM web_database WHERE server_id = ? GROUP BY sys_groupid, database_name ASC", $server_id);
      if(is_array($databases) && !empty($databases)) {
         $data = array();
         for ($i = 0; $i < sizeof($records); $i++) {
            $data[$i]['name'] = $records[$i]['database_name'];
            $data[$i]['size'] = $app->db->getDatabaseSize($data[$i]['name']);
            $data[$i]['client_id'] = $records[$i]['sys_groupid'];
         for ($i = 0; $i < sizeof($databases); $i++) {
            $rec = $databases[$i];
            $data[$i]['database_name']= $rec['database_name'];
            $data[$i]['size'] = $app->db->getDatabaseSize($rec['database_name']);
            $data[$i]['sys_groupid'] = $rec['sys_groupid'];
            $quota = $rec['database_quota'] * 1024 * 1024;
            if(!is_numeric($quota)) continue;
            if($quota < 1 || $quota > $data[$i]['size']) {
               print $rec['database_name'] . ' does not exceed quota qize: ' . $quota . ' > ' . $data[$i]['size'] . "\n";
               if($rec['quota_exceeded'] == 'y') {
                  $app->dbmaster->datalogUpdate('web_database', array('quota_exceeded' => 'n'), 'database_id', $rec['database_id']);
               }
            } elseif($rec['quota_exceeded'] == 'n') {
               print $rec['database_name'] . ' exceeds quota qize: ' . $quota . ' < ' . $data[$i]['size'] . "\n";
               $app->dbmaster->datalogUpdate('web_database', array('quota_exceeded' => 'y'), 'database_id', $rec['database_id']);
            }
         }
         $res = array();
         $res['server_id'] = $server_id;
         $res['type'] = $type;
         $res['data'] = $data;
         $res['state'] = $state;
         //* Insert the data into the database
         $sql = 'REPLACE INTO monitor_data (server_id, type, created, data, state) ' .
            'VALUES (?, ?, UNIX_TIMESTAMP(), ?, ?)';
         $app->dbmaster->query($sql, $res['server_id'], $res['type'], serialize($res['data']), $res['state']);
         //* The new data is written, now we can delete the old one
         $this->_tools->delOldRecords($res['type'], $res['server_id']);
      }
      $res = array();
      $res['server_id'] = $server_id;
      $res['type'] = $type;
      $res['data'] = $data;
      $res['state'] = $state;
      /*
       * Insert the data into the database
       */
      $sql = 'REPLACE INTO monitor_data (server_id, type, created, data, state) ' .
         'VALUES (' .
         $res['server_id'] . ', ' .
         "'" . $app->dbmaster->quote($res['type']) . "', " .
         'UNIX_TIMESTAMP(), ' .
         "'" . $app->dbmaster->quote(serialize($res['data'])) . "', " .
         "'" . $res['state'] . "'" .
         ')';
      $app->dbmaster->query($sql);
      /* The new data is written, now we can delete the old one */
      $this->_tools->delOldRecords($res['type'], $res['server_id']);
      parent::onRunJob();
   }