Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- require_once($modx->config['base_path'].'assets/libs/other_cache/cache.php');
- function get_metrika($offset = 0) {
- $yandex_api_url = 'http://api-metrika.yandex.ru/stat/content/popular.json';
- $yandex_api_token = 'd15b2d36fa4d4e98bf76fb3968ed0ffd';
- $yandex_api_id = '20358700';
- $start_date = '20130219';
- $now_date = date('Ymd');
- //строим урл до статистики яндекса
- $url = $yandex_api_url."?id=".$yandex_api_id."&date1=".$start_date.
- "&date2=".$now_date."&oauth_token=".$yandex_api_token.
- "&per_page=2000&reverse=1&offset=".$offset;
- //забираем из яндекса статистику
- $timeout = array('http' => array('timeout' => 5));
- $context = stream_context_create($timeout);
- try {
- $metrika = json_decode(file_get_contents($url, false, $context), TRUE);
- } catch (Exception $e) {
- //запишет сообщение в лог.
- $modx->logEvent(0, 3,
- 'Ошибка получения метрики:'.$e->getMessage(),
- 'columnist_article_info');
- $metrika = array('data' => array());
- }
- return $metrika;
- }
- function metrika_cache() {
- $cache = new Cache;
- $cache_data = $cache->read('ya_metrika_cache.php');
- if ($cache_data) {
- $cache_date = $cache_data['createdon'];
- //здесь проверяется не истекло ли время жизни кеша. 2 раза в сутки
- if (time()-$cache_date <= 12*60*60) {
- //просто получаем данные
- $metrika = $cache_data['metrika'];
- return $metrika;
- } else {
- //фаил есть, но истек. Удаляем старый, создаём новый
- $cache->delete('ya_metrika_cache.php');
- $metrika = get_metrika();
- if (isset($metrika)&&!empty($metrika)) {
- $cache->write('ya_metrika_cache.php',
- array('metrika' => $metrika,
- 'createdon' => time()));
- }
- return $metrika;
- }
- } else {
- //файла нет - создаём
- $metrika = get_metrika();
- if (isset($metrika)&&!empty($metrika)) {
- $cache->write('ya_metrika_cache.php',
- array('metrika' => $metrika,
- 'createdon' => time()));
- }
- return $metrika;
- }
- return null;
- }
- function get_statics($metrika, $pageid) {
- global $modx;
- $url = $modx->makeUrl($pageid);
- foreach ($metrika['data'] as $row) {
- if (strripos($row['url'], $url)) {
- return $row['page_views'];
- }
- }
- return 0;
- }
- function get_info() {
- global $modx;
- $userid = $modx->getLoginUserID();
- if (isset($userid)&&!empty($userid)&&$userid&&
- $modx->isMemberOfWebGroup(array('Колумнисты',))) {
- $metrika = metrika_cache();
- $result = "<div id='columnist_article_info'>";
- $table_content = $modx->getFullTableName('site_content');
- $db_res = $modx->db->select("id, pagetitle", $table_content,
- "createdby = -$userid AND published = 1",
- "menuindex");
- if ($modx->db->getRecordCount($db_res)) {
- require_once MODX_BASE_PATH.'/assets/snippets/lastcomments/lastcomments.php';
- $result .= "<div>Ваши статьи в разделе «Колумнисты»:</div>\n";
- $result .= "<ul>\n";
- while($page = $modx->db->getRow($db_res,"assoc")) {
- $url = $modx->makeUrl($page['id']);
- $result .= "<li>\n";
- $result .= "<a href='$url'>{$page['pagetitle']}</a><br />\n";
- if (!empty($metrika)) {
- $views_count = get_statics($metrika, $page['id']);
- } else {
- $views_count = 0;
- }
- $result .= "(просмотров: $views_count; ";
- $comments_count = get_comments_count($page['id']);
- $result .= "комментариев: $comments_count)";
- $result .= "</li>\n";
- }
- $result .= "</ul>\n";
- $result .= "<p><b>Статистика обновляется 2 раза в сутки</b></p>";
- }
- $result .= "</div>";
- return $result;
- }
- return "";
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement