public function generate_output($params = array()) { static $data_provider = null; static $ga = null; $data_provider != null or $data_provider = new vivvo_ga_chart_provider(); $ga != null or $ga = vivvo_ga::get_instance(array('email' => VIVVO_GA_EMAIL, 'password' => VIVVO_GA_PASSWORD, 'profileId' => VIVVO_GA_PROFILEID, 'no_auth' => true)); $this->set_template($params); unset($params['template_string']); unset($params['template']); $params = $data_provider->filter_box_params($params); $cache_key = 'ga_box_data_' . md5(serialize($params)); if (vivvo_cache::get_instance()->exists($cache_key)) { $report = vivvo_cache::get_instance()->get($cache_key); } else { $report = $ga->getReport($params); empty($params['data_handler']) and $params['data_handler'] = ''; switch ($params['data_handler']) { case 'article_views': class_exists('Articles') or (require VIVVO_FS_INSTALL_ROOT . 'lib/vivvo/core/Articles.class.php'); $article_ids = array(); foreach ($report as $row) { $article_ids[$row['dimensions']['ga:eventLabel']] = 1; } $articles = Articles_list::factory()->get_articles_by_ids(array_keys($article_ids)); for ($i = 0, $count = count($report); $i < $count; $i++) { if (!empty($articles[$report[$i]['dimensions']['ga:eventLabel']])) { $report[$i]['article'] = $articles[$report[$i]['dimensions']['ga:eventLabel']]; $report[$i]['views'] = $report[$i]['metrics']['ga:totalEvents']; } else { unset($report[$i]); } } $report = array_merge($report); default: } vivvo_cache::get_instance()->put($cache_key, $report, null, VIVVO_GA_CACHE_PERIOD); } $this->_template->assign('report', $report); }
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; } }
function _default_assignments() { $sm = vivvo_lite_site::get_instance(); $template =& $sm->get_template(); $um = $sm->get_url_manager(); $dm = $sm->get_dump_manager(); if ($um->isset_param('layout')) { $section_title = 'layout'; $section_file = VIVVO_FS_ADMIN_DIR . 'templates/preferences/layout.xml'; } elseif ($um->isset_param('caching')) { $section_title = 'caching'; $section_file = VIVVO_FS_ADMIN_DIR . 'templates/preferences/caching.xml'; } elseif ($um->isset_param('articles')) { $section_title = 'articles'; $section_file = VIVVO_FS_ADMIN_DIR . 'templates/preferences/articles.xml'; } elseif ($um->isset_param('comments')) { $section_title = 'comments'; $section_file = VIVVO_FS_ADMIN_DIR . 'templates/preferences/comments.xml'; } elseif ($um->isset_param('categories')) { $section_title = 'categories'; $section_file = VIVVO_FS_ADMIN_DIR . 'templates/preferences/categories.xml'; } elseif ($um->isset_param('email')) { $section_title = 'email'; $section_file = VIVVO_FS_ADMIN_DIR . 'templates/preferences/email.xml'; } elseif ($um->isset_param('analytics')) { $section_title = 'analytics'; $section_file = VIVVO_FS_ADMIN_DIR . 'templates/preferences/analytics.xml'; $template->assign('profiles_list', vivvo_ga::factory()->getProfiles()); } elseif ($um->isset_param('users')) { $section_title = 'users'; $section_file = VIVVO_FS_ADMIN_DIR . 'templates/preferences/users.xml'; $user_manager = $sm->get_user_manager(); $gl = $user_manager->get_group_list(); $groups = $gl->get_all_groups(); $template->assign('group_list', $groups); } else { $section_title = 'general'; $section_file = VIVVO_FS_ADMIN_DIR . 'templates/preferences/general.xml'; } $template->assign('section_title', $section_title); $template->assign('section_file', $section_file); }