/**
  * @return waAppSettingsModel
  */
 protected function getSettingsModel()
 {
     if (!self::$app_settings_model) {
         self::$app_settings_model = new waAppSettingsModel();
     }
     return self::$app_settings_model;
 }
 public function saveSettings($settings = array())
 {
     if (empty($settings['min_size']) || !is_numeric($settings['min_size'])) {
         $settings['min_size'] = '';
     }
     if (empty($settings['max_size']) || !is_numeric($settings['max_size'])) {
         $settings['max_size'] = '';
     }
     if (is_numeric($settings['min_size']) && is_numeric($settings['max_size']) && $settings['min_size'] > $settings['max_size']) {
         list($settings['max_size'], $settings['min_size']) = array($settings['min_size'], $settings['max_size']);
     }
     parent::saveSettings($settings);
 }
 public function saveSettings($settings = array())
 {
     $settings = $this->validateSettings($settings);
     if (isset($settings['delete_image']) && $settings['delete_image']) {
         $settings['image'] = '';
         unset($settings['delete_image']);
     } else {
         if (isset($settings['image']) && $settings['image'] instanceof waRequestFile) {
             /**
              * @var waRequestFile $file
              */
             $file = $settings['image'];
             if ($file->uploaded()) {
                 // check that file is image
                 try {
                     // create waImage
                     $file->waImage();
                 } catch (Exception $e) {
                     throw new Exception(_w("File isn't an image"));
                 }
                 $path = wa()->getDataPath('data/', true);
                 $file_name = 'watermark.' . $file->extension;
                 if (!file_exists($path) || !is_writable($path)) {
                     throw new Exception(sprintf(_wp('File could not be saved due to the insufficient file write permissions for the %s folder.'), 'wa-data/public/photos/data/'));
                 } elseif (!$file->moveTo($path, $file_name)) {
                     throw new Exception(_wp('Failed to upload file.'));
                 }
                 $settings['image'] = $file_name;
             } else {
                 $image = $this->getSettings('image');
                 if ($image) {
                     $settings['image'] = $image;
                 }
             }
         }
     }
     parent::saveSettings($settings);
 }