コード例 #1
0
 function edit_preferences($variable_name, $variable_value)
 {
     if (!$this->check_token()) {
         return false;
     }
     if (!vivvo_hooks_manager::call('vivvoCore_preferences', array(&$variable_name, &$variable_value))) {
         return vivvo_hooks_manager::get_status();
     }
     $sm = vivvo_lite_site::get_instance();
     if ($this->_user && $this->_user->is_admin()) {
         require_once VIVVO_FS_FRAMEWORK . 'vivvo_preference.php';
         $preferences_list = new preferences_list();
         $preferences = $preferences_list->get_preference_by_variable_name($variable_name);
         if ($preferences != false) {
             $variable_value = htmlspecialchars($variable_value, ENT_QUOTES, 'UTF-8');
             if ($variable_name == 'VIVVO_GENERAL_TIME_ZONE_FORMAT') {
                 $timezone_abbreviations = DateTimeZone::listIdentifiers();
                 if (in_array($variable_value, $timezone_abbreviations)) {
                     $preferences->set_variable_value($variable_value);
                     $this->_post_master->set_data_object($preferences);
                 } else {
                     $this->set_error_code(5122);
                     return false;
                 }
             } elseif ($variable_name == 'VIVVO_ALLOWED_IP_ADDRESSES') {
                 // normalize passed string (convert to comma-separated IPs)
                 $variable_value = str_replace(array("\r\n", "\n"), ',', $variable_value);
                 $variable_value = preg_replace('/\\s+/', '', $variable_value);
                 $variable_value = trim(preg_replace('/,+/', ',', $variable_value), ',');
                 if (!empty($variable_value)) {
                     $addresses = explode(',', $variable_value);
                     // check valid IP format (with wildcards)
                     foreach ($addresses as $addr) {
                         $parts = explode('.', $addr);
                         if (count($parts) == 4) {
                             foreach ($parts as $part) {
                                 if ($part == '*' or is_numeric($part) and ($part = (int) $part) > -1 and $part < 256) {
                                     continue;
                                 }
                                 $this->set_error_code(5120);
                                 return false;
                             }
                         } else {
                             $this->set_error_code(5120);
                             return false;
                         }
                     }
                     // prevent user blocking itself
                     $listed = false;
                     foreach ($addresses as $addr) {
                         if (fnmatch($addr, $this->_user->ip)) {
                             $listed = true;
                             break;
                         }
                     }
                     if ($listed == false) {
                         $this->set_error_code(5119);
                         return false;
                     }
                     unset($addresses, $addr, $parts, $part);
                 }
                 $preferences->set_variable_value($variable_value);
                 $this->_post_master->set_data_object($preferences);
             } elseif ($variable_name == 'VIVVO_EMAIL_SMTP_PHP' && $variable_value == 0) {
                 $um = $sm->get_url_manager();
                 $lang = vivvo_lang::get_instance();
                 $missing = array();
                 $host = $um->get_param('VIVVO_EMAIL_SMTP_HOST');
                 $username = $um->get_param('VIVVO_EMAIL_SMTP_USERNAME');
                 $password = $um->get_param('VIVVO_EMAIL_SMTP_PASSWORD');
                 empty($host) and $missing[] = $lang->get_value('LNG_CONF_VIVVO_EMAIL_SMTP_HOST');
                 empty($username) and $missing[] = $lang->get_value('LNG_CONF_VIVVO_EMAIL_SMTP_USERNAME');
                 empty($password) and $missing[] = $lang->get_value('LNG_CONF_VIVVO_EMAIL_SMTP_PASSWORD');
                 if (!empty($missing)) {
                     $this->set_error_code(5121, implode(', ', $missing));
                     $template = $sm->get_template();
                     $template->assign('VIVVO_EMAIL_SMTP_HOST', $host);
                     $template->assign('VIVVO_EMAIL_SMTP_USERNAME', $username);
                     $template->assign('VIVVO_EMAIL_SMTP_PASSWORD', $password);
                     return false;
                 }
                 $preferences->set_variable_value($variable_value);
                 $this->_post_master->set_data_object($preferences);
             } elseif ($variable_name == 'VIVVO_GA_ENABLED' and $variable_value) {
                 $um = $sm->get_url_manager();
                 $lang = vivvo_lang::get_instance();
                 $missing = array();
                 $email = $um->get_param('VIVVO_GA_EMAIL');
                 $password = $um->get_param('VIVVO_GA_PASSWORD');
                 $code = $um->get_param('VIVVO_GA_CODE');
                 empty($email) and $missing[] = $lang->get_value('LNG_CONF_VIVVO_GA_EMAIL');
                 empty($password) and $missing[] = $lang->get_value('LNG_CONF_VIVVO_GA_PASSWORD');
                 empty($code) and $missing[] = $lang->get_value('LNG_CONF_VIVVO_GA_CODE');
                 if (!empty($missing)) {
                     $this->set_error_code(5123, implode(', ', $missing));
                     // missing google analytics parameter(s)
                     $template = $sm->get_template();
                     $template->assign('VIVVO_GA_EMAIL', $email);
                     $template->assign('VIVVO_GA_PASSWORD', $password);
                     $template->assign('VIVVO_GA_CODE', $code);
                     return false;
                 }
                 $params = array('username' => $email, 'password' => $password, 'no_auth' => true);
                 if (vivvo_ga::get_instance($params)->authorize($email, $password, true) == false) {
                     $this->set_error_code(5124);
                     // google analytics authentication failed.
                     $template = $sm->get_template();
                     $template->assign('VIVVO_GA_EMAIL', $email);
                     $template->assign('VIVVO_GA_PASSWORD', $password);
                     $template->assign('VIVVO_GA_CODE', $code);
                     return false;
                 }
                 $preferences->set_variable_value($variable_value);
                 $this->_post_master->set_data_object($preferences);
             } elseif ($preferences->check_value($variable_value)) {
                 $preferences->set_variable_value($variable_value);
                 $this->_post_master->set_data_object($preferences);
             } else {
                 $preferences->set_error_code();
                 return false;
             }
             if ($this->_post_master->sql_update()) {
                 admin_log($sm->user->get_username(), 'Edited vivvo preferences.');
                 return true;
             } else {
                 $this->set_error_code(5101);
                 return false;
             }
         } else {
             $this->set_error_code(5102, $variable_name);
             return false;
         }
     } else {
         $this->set_error_code(5103);
         return false;
     }
 }
コード例 #2
0
ファイル: feed.service.php プロジェクト: ahanjir07/vivvo-dev
 /**
  * Edit plugin preferences.
  *
  * @param	string	$variable_name
  * @param	int		$variable_value
  * @return	bool	true on succes or false on failure
  */
 public function preferences_feed($variable_name, $variable_value)
 {
     if (!$this->check_token()) {
         return false;
     }
     $sm = vivvo_lite_site::get_instance();
     if ($sm->user and $sm->user->can('MANAGE_PLUGIN', 'feed_importer')) {
         if (!vivvo_hooks_manager::call('feed_preferences', array(&$variable_name, &$variable_value))) {
             return vivvo_hooks_manager::get_status();
         }
         require_once VIVVO_FS_FRAMEWORK . 'vivvo_preference.php';
         $preferences_list = new preferences_list();
         $preferences = $preferences_list->get_preference_by_variable_name($variable_name);
         if ($preferences != false) {
             if ($variable_name == 'VIVVO_PLUGIN_FEED_IMPORTER_USER_ID' and $variable_value < 0) {
                 $variable_value = 1;
             } elseif ($variable_name == 'VIVVO_PLUGIN_FEED_IMPORTER_STATUS' and $variable_value != 1) {
                 $variable_value = 0;
             } elseif ($variable_name == 'VIVVO_PLUGIN_FEED_IMPORTER_AUTO_ARCHIVE' and $variable_value <= 0) {
                 $variable_value = 0;
             } elseif ($variable_name == 'VIVVO_PLUGIN_FEED_IMPORTER_AUTO_DELETE' and $variable_value <= 0) {
                 $variable_value = 0;
             } elseif ($variable_name == 'VIVVO_PLUGIN_FEED_IMPORTER_PERIOD' and ($variable_value = (int) $variable_value) <= 0) {
                 $variable_value = 1;
             }
             $preferences->set_variable_value($variable_value);
             $this->_post_master->set_data_object($preferences);
             if ($this->_post_master->sql_update()) {
                 if ($variable_name == 'VIVVO_PLUGIN_FEED_IMPORTER_PERIOD') {
                     $pm = $sm->get_plugin_manager();
                     $cm = $sm->get_cron_manager();
                     if ($variable_value == 1) {
                         $variable_value = '*';
                     } else {
                         $variable_value = '*/' . $variable_value;
                     }
                     $cm->cron_job("19 {$variable_value} * * *", $pm->plugins['feed_importer']['root_dir'] . 'tasks/auto_import_feeds.php', null, 'auto_import_feeds');
                 }
                 return true;
             } else {
                 $this->set_error_code(10101);
                 // can't update plugin preferences
                 return false;
             }
         } else {
             $this->set_error_code(10102);
             // preference does not exists
             return false;
         }
     } else {
         $this->set_error_code(10103);
         // you don't have sufficient privileges for this action
         return false;
     }
 }
コード例 #3
0
 /**
  * Preferences
  * Edit preferences for newsletter
  *
  * @param	string	$variable_name
  * @param	integer	$variable_value
  * @return	boolean	true on succes, or false on fail
  */
 function preferences_newsletter($variable_name, $variable_value)
 {
     if ($this->_user && $this->_user->is_admin()) {
         require_once VIVVO_FS_FRAMEWORK . 'vivvo_preference.php';
         $preferences_list = new preferences_list();
         $preferences = $preferences_list->get_preference_by_variable_name($variable_name);
         if ($preferences != false) {
             if ($variable_name == 'VIVVO_PLUGIN_NEWSLETTER_NUMBER_OF_MAILS') {
                 $variable_value = (int) $variable_value;
                 if ($variable_value <= 0) {
                     $variable_value = 500;
                 }
             } elseif ($variable_name == 'VIVVO_PLUGIN_NEWSLETTER_PERIOD') {
                 $variable_value = (int) $variable_value;
                 if ($variable_value <= 0) {
                     $variable_value = 60;
                 }
             } elseif ($variable_name == 'VIVVO_PLUGIN_NEWSLETTER_UNSUBSCRIBE_TEXT' && $variable_value == '') {
                 $variable_value = 'Click following link to Unsubscribe:';
             } elseif ($variable_name == 'VIVVO_PLUGIN_NEWSLETTER_SUBSCRIBE_SUBJECT' && $variable_value == '') {
                 $variable_value = 'Subscribe to Newsletter';
             } elseif ($variable_name == 'VIVVO_PLUGIN_NEWSLETTER_SUBSCRIBE_BODY' && $variable_value == '') {
                 $variable_value = '<vte:template>Dear <vte:value select="{email}" />,' . "\n\n" . 'Thank you for signing up! Click or copy and paste this URL to your browser to activate your account:' . "\n" . '<vte:value  select="{activation_url}" />' . "\n\n" . 'Please note that your activation code is NOT your password.' . "\n" . 'Thank you for using our service' . "\n\n" . 'Best regards,' . "\n" . '<vte:value select="{VIVVO_WEBSITE_TITLE}" />' . "\n" . '<vte:value select="{VIVVO_URL}" />' . "\n" . '</vte:template>';
             }
             $variable_value = htmlspecialchars($variable_value, ENT_QUOTES, 'UTF-8');
             $preferences->set_variable_value($variable_value);
             $this->_post_master->set_data_object($preferences);
             if ($this->_post_master->sql_update()) {
                 if ($variable_name == 'VIVVO_PLUGIN_NEWSLETTER_PERIOD') {
                     $sm = vivvo_lite_site::get_instance();
                     $pm = $sm->get_plugin_manager();
                     $cm = $sm->get_cron_manager();
                     $cm->cron_job(array('every_i' => $variable_value), $pm->plugins['newsletter']['root_dir'] . 'tasks/mail_queue.php', '', 'mail_queue');
                 }
                 return true;
             } else {
                 $this->set_error_code(10228);
                 return false;
             }
         } else {
             $this->set_error_code(10229);
             return false;
         }
     } else {
         $this->set_error_code(10230);
         return false;
     }
 }
コード例 #4
0
 function unregister_url($url)
 {
     $sm =& vivvo_lite_site::get_instance();
     if ($sm->is_registered_url($url)) {
         require_once VIVVO_FS_FRAMEWORK . 'vivvo_post.php';
         require_once VIVVO_FS_FRAMEWORK . 'vivvo_preference.php';
         $pm = new vivvo_post_master();
         $config_list = new preferences_list();
         if ($config_list->get_preference_by_all_variable($url, '', '', 'url_modules', 1)) {
             $config_list->sql_delete_list($pm);
             unset($sm->url_modules[$url]);
             return true;
         }
     }
     return false;
 }
コード例 #5
0
 /**
  * Set configuration data
  *
  * @param string $name		Variable name
  * @param string $property	Variable property name
  * @param string $value		Variable value
  * @param string $module	Module name
  * @param string $reg_exp	Variable value restriction
  * @param string $doamin_id	Doamin restriction
  *
  * @return boolean True on success, false on fail
  */
 function set_conf($name, $property = '', $value, $module = '', $reg_exp = '', $domain_id = 1)
 {
     require_once VIVVO_FS_FRAMEWORK . 'vivvo_preference.php';
     if (!$this->_post_master) {
         $this->set__post_master();
     }
     $config_list = new preferences_list();
     $conf = $config_list->get_preference_by_all_variable($name, '', '', '');
     if ($conf) {
         if ($property != '') {
             $conf->set_variable_property($property);
         }
         $conf->set_variable_value($value);
         if ($module != '') {
             $conf->set_module($module);
         }
         if ($reg_exp != '') {
             $conf->set_reg_exp($reg_exp);
         }
         $conf->set_domain_id($domain_id);
         $this->_post_master->set_data_object($conf);
         $this->_post_master->sql_update();
         vivvo_cache::get_instance()->delete('configuration');
     } else {
         $this->add_conf($name, $property, $value, $module, $reg_exp, $domain_id);
     }
 }