save() public method

See also: Scalr\Model\AbstractEntity::save()
public save ( )
Example #1
0
 /**
  * @param string $ccId
  * @param array  $settings
  * @throws AnalyticsException
  * @throws Scalr_UI_Exception_NotFound
  */
 private function saveReports($ccId, $settings)
 {
     $uuids = array();
     foreach ($settings['items'] as $item) {
         $report = new ReportEntity();
         if ($item['uuid']) {
             $report->findPk($item['uuid']);
         }
         $report->subjectType = $item['subjectType'];
         $subject = null;
         if ($report->subjectType == ReportEntity::SUBJECT_TYPE_CC) {
             $subject = $this->getContainer()->analytics->ccs->get($item['subjectId']);
         } elseif ($report->subjectType == ReportEntity::SUBJECT_TYPE_PROJECT) {
             $subject = $this->getContainer()->analytics->projects->get($item['subjectId']);
         } else {
             $report->subjectType = null;
             $report->subjectId = null;
         }
         if ($report->subjectType) {
             if ($item['subjectId'] && !$subject) {
                 throw new Scalr_UI_Exception_NotFound();
             }
             $report->subjectId = $item['subjectId'] ? $item['subjectId'] : null;
         }
         $report->period = $item['period'];
         $report->emails = $item['emails'];
         $report->status = $item['status'];
         $report->save();
         $uuids[] = $report->uuid;
     }
     foreach (ReportEntity::find([['subjectType' => ReportEntity::SUBJECT_TYPE_CC], ['subjectId' => $ccId]]) as $report) {
         if (!in_array($report->uuid, $uuids)) {
             $report->delete();
         }
     }
 }
Example #2
0
 /**
  * Saves/modifies/deletes reports
  *
  * @param array $settings    Array of reports to create/modify
  * @param string $projectId  optional Projects id.
  * @throws Scalr_UI_Exception_NotFound
  * @throws \Scalr\Exception\AnalyticsException
  * @throws \Scalr\Exception\ModelException
  */
 protected function saveReports($settings, $projectId = null)
 {
     $uuids = [];
     foreach ($settings['items'] as $item) {
         $report = new ReportEntity();
         if ($item['uuid']) {
             $report->findPk($item['uuid']);
             if (!$report->hasAccessPermissions($this->getUser())) {
                 continue;
             }
         }
         $report->subjectType = $item['subjectType'];
         $subject = null;
         if ($report->subjectType == ReportEntity::SUBJECT_TYPE_CC && $item['subjectId']) {
             $subject = $this->getContainer()->analytics->ccs->get($item['subjectId']);
         } elseif ($report->subjectType == ReportEntity::SUBJECT_TYPE_PROJECT && $item['subjectId']) {
             $subject = $this->getContainer()->analytics->projects->get($item['subjectId']);
         } elseif ($item['subjectType'] == -1) {
             $report->subjectType = null;
             $report->subjectId = null;
         }
         if ($report->subjectType) {
             if ($item['subjectId'] && !$subject) {
                 throw new Scalr_UI_Exception_NotFound();
             }
             $report->subjectId = $item['subjectId'] ? $item['subjectId'] : null;
         }
         $report->period = $item['period'];
         $report->emails = $item['emails'];
         $report->status = $item['status'];
         $report->save();
         $uuids[] = $report->uuid;
     }
     $criteria = [['accountId' => null]];
     if ($projectId) {
         $criteria[] = ['subjectId' => $projectId];
     }
     foreach (ReportEntity::find($criteria) as $report) {
         /* @var $report ReportEntity */
         if (!in_array($report->uuid, $uuids) && $report->hasAccessPermissions($this->getUser())) {
             $report->delete();
         }
     }
 }