Open Monograph Press  3.3.0
UsageStatsSettingsForm.inc.php
1 <?php
2 
16 import('lib.pkp.classes.form.Form');
17 
19 
21  var $plugin;
22 
27  function __construct($plugin) {
28  $this->plugin = $plugin;
29 
30  parent::__construct($plugin->getTemplateResource('usageStatsSettingsForm.tpl'));
31  $this->addCheck(new FormValidatorCustom($this, 'dataPrivacyOption', FORM_VALIDATOR_OPTIONAL_VALUE, 'plugins.generic.usageStats.settings.dataPrivacyOption.requiresSalt', array(&$this, '_dependentFormFieldIsSet'), array(&$this, 'saltFilepath')));
32  $this->addCheck(new FormValidatorCustom($this, 'dataPrivacyOption', FORM_VALIDATOR_OPTIONAL_VALUE, 'plugins.generic.usageStats.settings.dataPrivacyOption.excludesRegion', array(&$this, '_dependentFormFieldIsSet'), array(&$this, 'selectedOptionalColumns', STATISTICS_DIMENSION_REGION), true));
33  $this->addCheck(new FormValidatorCustom($this, 'dataPrivacyOption', FORM_VALIDATOR_OPTIONAL_VALUE, 'plugins.generic.usageStats.settings.dataPrivacyOption.excludesCity', array(&$this, '_dependentFormFieldIsSet'), array(&$this, 'selectedOptionalColumns', STATISTICS_DIMENSION_CITY), true));
34  $this->addCheck(new FormValidatorCustom($this, 'saltFilepath', FORM_VALIDATOR_OPTIONAL_VALUE, 'plugins.generic.usageStats.settings.dataPrivacyOption.saltFilepath.invalid', array(&$plugin, 'validateSaltpath')));
35  $this->addCheck(new FormValidatorPost($this));
36  $this->addCheck(new FormValidatorCSRF($this));
37  }
38 
42  function initData() {
44 
45  $this->setData('createLogFiles', $plugin->getSetting(CONTEXT_ID_NONE, 'createLogFiles'));
46  $this->setData('accessLogFileParseRegex', $plugin->getSetting(CONTEXT_ID_NONE, 'accessLogFileParseRegex'));
47  $this->setData('dataPrivacyOption', $plugin->getSetting(CONTEXT_ID_NONE, 'dataPrivacyOption'));
48  $this->setData('saltFilepath', $plugin->getSaltPath());
49  $this->setData('selectedOptionalColumns', $plugin->getSetting(CONTEXT_ID_NONE, 'optionalColumns'));
50  $this->setData('compressArchives', $plugin->getSetting(CONTEXT_ID_NONE, 'compressArchives'));
51 
52  $request = Application::get()->getRequest();
53  $context = $request->getContext();
54  $this->setData('displayStatistics', $plugin->_getPluginSetting($context, 'displayStatistics'));
55  $this->setData('datasetMaxCount', $plugin->_getPluginSetting($context, 'datasetMaxCount'));
56  $this->setData('chartType', $plugin->_getPluginSetting($context, 'chartType'));
57  }
58 
62  function readInputData() {
63  $this->readUserVars(array(
64  'createLogFiles',
65  'accessLogFileParseRegex',
66  'dataPrivacyOption',
67  'optionalColumns',
68  'compressArchives',
69  'saltFilepath',
70  'displayStatistics',
71  'chartType',
72  'datasetMaxCount'
73  ));
74  $this->setData('selectedOptionalColumns', $this->getData('optionalColumns'));
75  }
76 
80  function fetch($request, $template = null, $display = false) {
81  $templateMgr = TemplateManager::getManager($request);
82  $saltFilepath = Config::getVar('usageStats', 'salt_filepath');
84  $templateMgr->assign(array(
85  'chartTypes' => array(
86  'bar' => __('plugins.generic.usageStats.settings.statsDisplayOptions.chartType.bar'),
87  'line' => __('plugins.generic.usageStats.settings.statsDisplayOptions.chartType.line'),
88  ),
89  'pluginName' => $this->plugin->getName(),
90  'saltFilepath' => $saltFilepath && file_exists($saltFilepath) && is_writable($saltFilepath),
91  'optionalColumnsOptions' => $this->getOptionalColumnsList(),
92  'applicationName' => $application->getName(),
93  ));
94  if (!$this->getData('selectedOptionalColumns')) {
95  $this->setData('selectedOptionalColumns', array());
96  }
97  return parent::fetch($request, $template, $display);
98  }
99 
103  function execute(...$functionArgs) {
105 
106  $plugin->updateSetting(CONTEXT_ID_NONE, 'createLogFiles', $this->getData('createLogFiles'), 'bool');
107  $plugin->updateSetting(CONTEXT_ID_NONE, 'accessLogFileParseRegex', $this->getData('accessLogFileParseRegex'));
108  $plugin->updateSetting(CONTEXT_ID_NONE, 'dataPrivacyOption', $this->getData('dataPrivacyOption'), 'bool');
109  $plugin->updateSetting(CONTEXT_ID_NONE, 'compressArchives', $this->getData('compressArchives'), 'bool');
110  $plugin->updateSetting(CONTEXT_ID_NONE, 'saltFilepath', $this->getData('saltFilepath'));
111 
112  $request = Application::get()->getRequest();
113  $context = $request->getContext();
114  $contextId = $context ? $context->getId() : CONTEXT_ID_NONE;
115  $plugin->updateSetting($contextId, 'displayStatistics', $this->getData('displayStatistics'), 'bool');
116  $plugin->updateSetting($contextId, 'chartType', $this->getData('chartType'));
117  $plugin->updateSetting($contextId, 'datasetMaxCount', $this->getData('datasetMaxCount'));
118 
119  $optionalColumns = $this->getData('optionalColumns');
120  // Make sure optional columns data makes sense.
121  if ($optionalColumns && in_array(STATISTICS_DIMENSION_CITY, $optionalColumns) && !in_array(STATISTICS_DIMENSION_REGION, $optionalColumns)) {
122  $user = $request->getUser();
123  import('classes.notification.NotificationManager');
124  $notificationManager = new NotificationManager();
125  $notificationManager->createTrivialNotification(
126  $user->getId(), NOTIFICATION_TYPE_WARNING, array('contents' => __('plugins.generic.usageStats.settings.optionalColumns.cityRequiresRegion'))
127  );
128  $optionalColumns[] = STATISTICS_DIMENSION_REGION;
129  $optionalColumns[] = STATISTICS_DIMENSION_REGION;
130  }
131  $plugin->updateSetting(CONTEXT_ID_NONE, 'optionalColumns', $optionalColumns);
132 
133  parent::execute(...$functionArgs);
134  }
135 
140  function getOptionalColumnsList() {
141  import('classes.statistics.StatisticsHelper');
142  $statsHelper = new StatisticsHelper();
144  $reportPlugin = $plugin->getReportPlugin();
145  $metricType = $reportPlugin->getMetricTypes();
146  $optionalColumns = $reportPlugin->getOptionalColumns($metricType);
147  $columnsList = array();
148  foreach ($optionalColumns as $column) {
149  $columnsList[$column] = $statsHelper->getColumnNames($column);
150  }
151  return $columnsList;
152  }
153 
163  function _dependentFormFieldIsSet($fieldValue, $form, $dependentFieldName, $expectedValue = null) {
164  if ($fieldValue) {
165  $dependentValue = $form->getData($dependentFieldName);
166  if ($dependentValue) {
167  if ($expectedValue) {
168  // Check the expected value against the dependent value
169  if (is_array($dependentValue)) {
170  return in_array($expectedValue, $dependentValue, true);
171  } else {
172  return $dependentValue === $expectedValue;
173  }
174  } else {
175  // Field was set and any dependent value is allowed
176  return true;
177  }
178  } else {
179  // Field was set but no dependent value was set
180  return false;
181  }
182  } else {
183  // This is false so the complement call will be true when checking a negative dependency
184  // e.g., if $fieldValue, $dependentFieldName can't contain $expectedValue
185  return false;
186  }
187  }
188 }
189 
$application
$application
Definition: index.php:61
UsageStatsSettingsForm\execute
execute(... $functionArgs)
Definition: UsageStatsSettingsForm.inc.php:106
Form\setData
setData($key, $value=null)
Definition: Form.inc.php:229
StatisticsHelper
Statistics helper class.
Definition: StatisticsHelper.inc.php:22
Form\readUserVars
readUserVars($vars)
Definition: Form.inc.php:378
Form\getData
getData($key)
Definition: Form.inc.php:220
UsageStatsSettingsForm\$plugin
$plugin
Definition: UsageStatsSettingsForm.inc.php:24
FormValidatorPost
Form validation check to make sure the form is POSTed.
Definition: FormValidatorPost.inc.php:18
UsageStatsSettingsForm\__construct
__construct($plugin)
Definition: UsageStatsSettingsForm.inc.php:30
Config\getVar
static getVar($section, $key, $default=null)
Definition: Config.inc.php:35
UsageStatsSettingsForm\initData
initData()
Definition: UsageStatsSettingsForm.inc.php:45
PKPTemplateManager\getManager
static & getManager($request=null)
Definition: PKPTemplateManager.inc.php:1239
UsageStatsSettingsForm\readInputData
readInputData()
Definition: UsageStatsSettingsForm.inc.php:65
UsageStatsSettingsForm\getOptionalColumnsList
getOptionalColumnsList()
Definition: UsageStatsSettingsForm.inc.php:143
Form\addCheck
addCheck($formValidator)
Definition: Form.inc.php:395
NotificationManager
Definition: NotificationManager.inc.php:19
FormValidatorCSRF
Form validation check to make sure the CSRF token is correct.
Definition: FormValidatorCSRF.inc.php:18
Form
Class defining basic operations for handling HTML forms.
Definition: Form.inc.php:47
PKPApplication\get
static get()
Definition: PKPApplication.inc.php:235
FormValidatorCustom
Form validation check with a custom user function performing the validation check.
Definition: FormValidatorCustom.inc.php:18
UsageStatsSettingsForm\_dependentFormFieldIsSet
_dependentFormFieldIsSet($fieldValue, $form, $dependentFieldName, $expectedValue=null)
Definition: UsageStatsSettingsForm.inc.php:166
UsageStatsSettingsForm
Form for journal managers to modify usage statistics plugin settings.
Definition: UsageStatsSettingsForm.inc.php:18
UsageStatsSettingsForm\fetch
fetch($request, $template=null, $display=false)
Definition: UsageStatsSettingsForm.inc.php:83