public function formatStoreRecord($record, $model, $store) { $record['user_name'] = $model->user ? $model->user->name : 'unknown'; $domainInfo = \GO\Postfixadmin\Model\Mailbox::model()->find(\GO\Base\Db\FindParams::newInstance()->single()->select('COUNT(*) AS mailbox_count, SUM(`usage`) AS `usage`, SUM(`quota`) AS `quota`')->criteria(\GO\Base\Db\FindCriteria::newInstance()->addCondition('domain_id', $model->id))); $domainInfo2 = \GO\Postfixadmin\Model\Alias::model()->find(\GO\Base\Db\FindParams::newInstance()->single()->select('COUNT(*) AS alias_count')->criteria(\GO\Base\Db\FindCriteria::newInstance()->addCondition('domain_id', $model->id))); $record['usage'] = \GO\Base\Util\Number::formatSize($domainInfo->usage * 1024); $record['quota'] = \GO\Base\Util\Number::formatSize($model->total_quota * 1024); $record['used_quota'] = \GO\Base\Util\Number::formatSize($domainInfo->quota * 1024); $record['mailbox_count'] = $domainInfo->mailbox_count . ' / ' . $model->max_mailboxes; $record['alias_count'] = $domainInfo2->alias_count . ' / ' . $model->max_aliases; return $record; }
protected function beforeSubmit(&$response, &$model, &$params) { if (!\GO::user()) { if (empty($params['serverclient_token']) || $params['serverclient_token'] != \GO::config()->serverclient_token) { throw new \GO\Base\Exception\AccessDenied(); } else { \GO::session()->runAsRoot(); } } if (isset($params['domain_id'])) { $domainModel = \GO\Postfixadmin\Model\Domain::model()->findByPk($params['domain_id']); } else { $domainModel = \GO\Postfixadmin\Model\Domain::model()->findSingleByAttribute("domain", $params['domain']); //serverclient module doesn't know the domain_id. It sends the domain name as string. if (!$domainModel) { //todo create new domain $domainModel = new \GO\Postfixadmin\Model\Domain(); $domainModel->domain = $params['domain']; $domainModel->user_id = \GO::user()->id; $domainModel->save(); } $params['domain_id'] = $domainModel->id; $model->quota = $domainModel->default_quota; } if (isset($params['quota'])) { $model->quota = \GO\Base\Util\Number::unlocalize($params['quota']) * 1024; unset($params['quota']); } if ($params['password'] != $params['password2']) { throw new \Exception(\GO::t('passwordMatchError')); } if (empty($params['password'])) { unset($params['password']); } if (isset($params['username'])) { $params['username'] .= '@' . $domainModel->domain; } if ($model->isNew) { // $aliasModel = \GO\Postfixadmin\Model\Alias::model()->findSingleByAttribute('address', $params['username']); // if (empty($aliasModel)) { // $aliasModel = new \GO\Postfixadmin\Model\Alias(); // } // $aliasModel->domain_id = $params['domain_id']; // $aliasModel->address = $params['username']; // $aliasModel->goto = $params['username']; // $aliasModel->save(); if (!empty($params['alias']) && $params['alias'] != $params['username']) { $aliasModel = \GO\Postfixadmin\Model\Alias::model()->findSingleByAttribute('address', $params['alias']); if (empty($aliasModel)) { $aliasModel = new \GO\Postfixadmin\Model\Alias(); } $aliasModel->domain_id = $params['domain_id']; $aliasModel->address = $params['alias']; $aliasModel->goto = $params['username']; $aliasModel->save(); } } }