Next Generation CMS :: Форум поддержки

Заинтересовала наша система? Тогда этот форум для Вас!

Вы не зашли.

#1 2011-01-11 13:09:53

Yukos
Участник
Откуда Рязанская обл. г. Скопин
Зарегистрирован: 2011-01-11
Сообщений: 116
Рейтинг :   
Сайт

Статистика по пользователям

Доброго времени суток всем поклонникам NG CMS!

Долго искал бесплатную замену DLE и вот вышел NG CMS. Очень все понравилось и дальше планирую работать только с этим движком.

На данный момент у меня вопрос как сделать? Для работы моего нового проекта, надо как минимум чтобы в разделе управления пользователями была статистика не только о количестве новостей добавленных каждым пользователем, но и общее количестве просмотров этих новостей.
А еще лучше, чтобы такие данные можно было вывести на отдельную страницу сайта онлайн, а также экспортировать в Excel. Как возможно такое реализовать?

Помогите пожалуйста с этим вопросом!


Суета сует, - все суета... (Екклесиаст)
Дешевый и надежный хостинг

Не в сети

#2 2011-01-11 15:00:09

Wolverine
Модератор
Откуда Домодедово
Зарегистрирован: 2008-10-13
Сообщений: 3,538
Рейтинг :   160 
Сайт

Re: Статистика по пользователям

\engine\actions\users.php

Найти ~244 строчку

$sql = "select * from ".uprefix."_users ".$where.' '.$order.' '.$limit;

Заменить на

$sql = "SELECT u.*, (SELECT SUM(n.views) FROM ".prefix."_news n WHERE u.id = n.author_id) AS cntviews FROM ".uprefix."_users u ".$where.' '.$order.' '.$limit;

Найти ~254 строчку

'news'			=>	$row['news'],

заменить на

news'			=>	$row['news'].($row['cntviews']?' ['.$row['cntviews'].']':''),

Теперь в скобочках можно наблюдать количество просмотров всех новостей

3e0ceefd4febe3e5c6df7ee0d7b806b3.png

Yukos пишет:

А еще лучше, чтобы такие данные можно было вывести на отдельную страницу сайта онлайн, а также экспортировать в Excel. Как возможно такое реализовать?

Я бы прикрутил эту фичу к плагину статистики, но моего плагина пока нет, а чужое мне уже и не хочется трогать после недавних событий. Так что ждите других людей, это же так нравится пользователям smile

Изменено Wolverine (2011-01-11 15:00:28)

Не в сети

#3 2011-01-11 15:03:16

LinMas
Участник
Откуда Украина, г. Черкассы
Зарегистрирован: 2010-04-26
Сообщений: 224
Рейтинг :   
Сайт

Re: Статистика по пользователям

Wolverine,
ну ту по идеи надо не во всю статистику выводить, а выводить на отдельной странице список юзеров с постраничкой и и сортить по количеству новостей и просмотров

Не в сети

#4 2011-01-11 15:19:43

Wolverine
Модератор
Откуда Домодедово
Зарегистрирован: 2008-10-13
Сообщений: 3,538
Рейтинг :   160 
Сайт

Re: Статистика по пользователям

Весь алгоритм уже готов в users.php, дальше работает Ctrl-C/Ctrl-V в плагин статистики и 20 минут создания еще одной собственной страницы и перенос шаблонов.

А вообще есть же плагин userlist, который давно выводит список всех пользователей, вот туда еще логичнее всунуть этот функционал. Тогда тут вообще на 5 минут работы.

С Excel чуть посложнее, но есть готовая библиотека в PEAR - Spreadsheet_Excel_Writer http://pear.php.net/package/Spreadsheet … redirected и мануал на русском для старта http://www.phpclub.ru/detail/article/Excel_Writer

Изменено Wolverine (2011-01-11 15:20:18)

Не в сети

#5 2011-01-11 16:01:09

vitaly
Администратор
Откуда Россия
Зарегистрирован: 2008-10-08
Сообщений: 2,823
Рейтинг :   118 

Re: Статистика по пользователям

Wolverine, Excel по крупному счету не нужен - можно сделать CSV, тот же Excel его легко импортирует

Не в сети

#6 2011-01-11 16:51:48

Yukos
Участник
Откуда Рязанская обл. г. Скопин
Зарегистрирован: 2011-01-11
Сообщений: 116
Рейтинг :   
Сайт

Re: Статистика по пользователям

Спасибо, что не оставили мой вопрос без ответа.
Изменил код - статистика просмотров отражается.
Теперь относительно экспорта  Excel: эти данные я бы мог в ручную перегнать копированием и вставкой сначала в блокнот, а потом в Excel, но наверно из-за того, что просмотры отражаются в скобках, данные о количестве новостей и просмотров в  Excel попадают в один столбец.
Соответственно в этом случае я не могу применить формулу для дальнейшего расчета. Конечно можно перебить данные просмотров вручную, но хотелось бы проще.

Про плагины и библиотеки еще не разобрался. Поизучаю, тогда если будут вопросы напишу. А пока еще раз большое спасибо!


Суета сует, - все суета... (Екклесиаст)
Дешевый и надежный хостинг

Не в сети

#7 2011-01-11 17:27:34

LinMas
Участник
Откуда Украина, г. Черкассы
Зарегистрирован: 2010-04-26
Сообщений: 224
Рейтинг :   
Сайт

Re: Статистика по пользователям

Wolverine,
я userlist  и имел ввиду

Не в сети

#8 2011-01-11 20:42:54

Wolverine
Модератор
Откуда Домодедово
Зарегистрирован: 2008-10-13
Сообщений: 3,538
Рейтинг :   160 
Сайт

Re: Статистика по пользователям

Ну скобки то можно убрать

news'   => $row['news'].($row ['cntviews']?' '.$row['cntviews']:''),

Только это геморно имхо руками копировать, надо автоматизировать. Тебе что нужно экспортировать? Тот вариант, что и в админке? То есть Ник, Количество новостей, Суммарное количество их просмотров. Для всех пользователей?

vitaly, о, я что-то слышал про него, но не использовал. Тогда все гораздо легче становится.

Изменено Wolverine (2011-01-11 20:49:27)

Не в сети

#9 2011-01-11 22:33:55

Yukos
Участник
Откуда Рязанская обл. г. Скопин
Зарегистрирован: 2011-01-11
Сообщений: 116
Рейтинг :   
Сайт

Re: Статистика по пользователям

Да мне нужно в одной таблице по каждому пользователю: Ник, количество его новостей и суммарное количество просмотров новостей этого пользователя.


Суета сует, - все суета... (Екклесиаст)
Дешевый и надежный хостинг

Не в сети

#10 2011-01-11 23:24:51

LinMas
Участник
Откуда Украина, г. Черкассы
Зарегистрирован: 2010-04-26
Сообщений: 224
Рейтинг :   
Сайт

Re: Статистика по пользователям

Yukos,
ну это не сложно, жди думаю Wolverine, быстро сделает

Не в сети

#11 2011-01-12 01:00:14

Wolverine
Модератор
Откуда Домодедово
Зарегистрирован: 2008-10-13
Сообщений: 3,538
Рейтинг :   160 
Сайт

Re: Статистика по пользователям

Если есть баги сорри, делал за 15 минут, завтра экзамен smile

1. Добавление кнопки "Выгрузить в CSV"

a4c12ce54f1eb36d3f6c73a6ce547dbd.png

\engine\skins\default\tpl\users\table.tpl

Найти

<input type="submit" value="{l_sortit}" class="button" />
</form>

ниже добавить

<form method="POST" name="CSV" action="admin.php?mod=users&action=csv">
<input type="submit" value="Выгрузить в CSV" class="button" />
</form>

2. PHP обработчик

\engine\actions\users.php

Найти

case 'massDelInactive'	: userMassDeleteInactive();	break;

ниже добавить

case 'csv'				: userCSV();	break;

Найти

// ==============================================
// Actions
// ==============================================

ПЕРЕД этим блоком добавить

# put to CSV file
function userCSV(){
	global $mysql;
	
	$sql = "SELECT u.id, u.name, u.news, (SELECT SUM(n.views) FROM ".prefix."_news n WHERE u.id = n.author_id) AS cntviews FROM ".uprefix."_users u WHERE `news` <> 0";
	
	$fp = fopen('users.csv', 'w');
	fputcsv($fp, array('Никнейм', 'Количество новостей', 'Суммарное количество просмотров'), ';');
	
	foreach ($mysql->select($sql) as $row){
		fputcsv($fp, array($row['name'], $row['news'], $row['cntviews']), ';');
	}
	
	fclose($fp);
}

ea480a3fd728cbd4d840bcb9b5b00ecb.png

fce7059fda1d4905d6d98827c710133e.png

c09f13a5faa22c29b8699ae39c7dac14.png

Не в сети

#12 2011-01-12 10:54:51

Yukos
Участник
Откуда Рязанская обл. г. Скопин
Зарегистрирован: 2011-01-11
Сообщений: 116
Рейтинг :   
Сайт

Re: Статистика по пользователям

Wolverine, спасибо все работает!


Суета сует, - все суета... (Екклесиаст)
Дешевый и надежный хостинг

Не в сети

#13 2011-01-20 11:56:18

Yukos
Участник
Откуда Рязанская обл. г. Скопин
Зарегистрирован: 2011-01-11
Сообщений: 116
Рейтинг :   
Сайт

Re: Статистика по пользователям

Wolverine, Вы мне здорово помогли с отображением количества просмотров в разделе "управления пользователями".

Подскажите пожалуйста еще, какой код и куда засунуть, чтобы количество просмотров всех новостей пользователя отображалось у него в разделе "Мой профиль" так же в скобках рядом с количеством его новостей.

Заранее благодарен.


Суета сует, - все суета... (Екклесиаст)
Дешевый и надежный хостинг

Не в сети

#14 2011-01-20 12:29:31

Wolverine
Модератор
Откуда Домодедово
Зарегистрирован: 2008-10-13
Сообщений: 3,538
Рейтинг :   160 
Сайт

Re: Статистика по пользователям

\engine\plugins\uprofile\uprofile.php

Найти

// Check if valid user identity is specified
	$urow = '';
	if (isset($params['id']) && (intval($params['id']) > 0)) {
		$urow = $mysql->record("select * from ".uprefix."_users where id = ".intval($params['id']));
	} else if (isset($params['name'])) {
		$urow = $mysql->record("select * from ".uprefix."_users where name = ".db_squote($params['name']));
	} else if (isset($_REQUEST['id'])) {
		$urow = $mysql->record("select * from ".uprefix."_users where id = ".intval($_REQUEST['id']));
	} else if (isset($_REQUEST['name'])) {
		$urow = $mysql->record("select * from ".uprefix."_users where name = ".db_squote($_REQUEST['name']));
	}

Заменить на

	// Check if valid user identity is specified
	$urow = '';
	if (isset($params['id']) && (intval($params['id']) > 0)) {
		$urow = $mysql->record("select *, (SELECT SUM(n.views) FROM ".prefix."_news n WHERE u.id = n.author_id) AS cntviews from ".uprefix."_users u where id = ".intval($params['id']));
	} else if (isset($params['name'])) {
		$urow = $mysql->record("select *, (SELECT SUM(n.views) FROM ".prefix."_news n WHERE u.id = n.author_id) AS cntviews from ".uprefix."_users u where name = ".db_squote($params['name']));
	} else if (isset($_REQUEST['id'])) {
		$urow = $mysql->record("select *, (SELECT SUM(n.views) FROM ".prefix."_news n WHERE u.id = n.author_id) AS cntviews from ".uprefix."_users u where id = ".intval($_REQUEST['id']));
	} else if (isset($_REQUEST['name'])) {
		$urow = $mysql->record("select *, (SELECT SUM(n.views) FROM ".prefix."_news n WHERE u.id = n.author_id) AS cntviews from ".uprefix."_users u where name = ".db_squote($_REQUEST['name']));
	}

Найти     

$tpl -> template('users', $tpath['users']);
	$tvars['vars'] = array(
		'user'		=>	$urow['name'],
		'news'		=>	$urow['news'],

Заменить на     

$tpl -> template('users', $tpath['users']);
	$tvars['vars'] = array(
		'user'		=>	$urow['name'],
		'news'		=>	$urow['news'].($urow['cntviews']?' ['.$urow['cntviews'].']':''),

Или можно сделать отдельную переменную под просмотры, которую можно будет использовать в шаблоне \uprofile\tpl\users.tpl, то есть написать Количество просмотров: {cntviews} после (примерно 88 строка)

'status'	=>	$status,

добавить

'cntviews'	=>	$urow['cntviews'],

bbdc27d59e6cca65f83dcff1cb92ac54.png

Изменено Wolverine (2011-01-20 12:32:45)

Не в сети

#15 2011-01-20 19:42:36

Yukos
Участник
Откуда Рязанская обл. г. Скопин
Зарегистрирован: 2011-01-11
Сообщений: 116
Рейтинг :   
Сайт

Re: Статистика по пользователям

Wolverine, несколько раз пробовал, тщательно менял коды, просмотры не появляются. Что еще может быть?


Суета сует, - все суета... (Екклесиаст)
Дешевый и надежный хостинг

Не в сети

#16 2011-01-20 20:13:57

Wolverine
Модератор
Откуда Домодедово
Зарегистрирован: 2008-10-13
Сообщений: 3,538
Рейтинг :   160 
Сайт

Re: Статистика по пользователям

Не знаю, я проделал все заново, работает нормально

Не в сети

#17 2011-01-20 20:20:36

Yukos
Участник
Откуда Рязанская обл. г. Скопин
Зарегистрирован: 2011-01-11
Сообщений: 116
Рейтинг :   
Сайт

Re: Статистика по пользователям

Тогда давайте я попробую уточнить.

Вот замена двух первых кодов достаточно, потому что далее вы пишите "или".

Или вот это тоже надо проделать? Если да, то напишите подробнее, а то не пойму эти коды в этом же файле? И что значить добавить? После вставить?
Код:

'status'    =>    $status,

добавить
Код:

'cntviews'    =>    $urow['cntviews'],


Суета сует, - все суета... (Екклесиаст)
Дешевый и надежный хостинг

Не в сети

#18 2011-01-20 21:34:50

Wolverine
Модератор
Откуда Домодедово
Зарегистрирован: 2008-10-13
Сообщений: 3,538
Рейтинг :   160 
Сайт

Re: Статистика по пользователям

Достаточно. Коды в этом же файле. Добавить после это вставить. Выложи свой uprofile.php посмотрю.

Не в сети

#19 2011-01-21 00:46:25

magliona
Участник
Откуда Украина
Зарегистрирован: 2010-06-23
Сообщений: 215
Рейтинг :   
Сайт

Re: Статистика по пользователям

Wolverine, Спс всё получилось.

Не в сети

#20 2011-01-21 08:13:10

Yukos
Участник
Откуда Рязанская обл. г. Скопин
Зарегистрирован: 2011-01-11
Сообщений: 116
Рейтинг :   
Сайт

Re: Статистика по пользователям

Вот, заменил первых два кода - не работает. Посмотрите файл, что не так вставил.

<?php

// Protect against hack attempts
if (!defined('NGCMS')) die ('HAL');

LoadPluginLang('uprofile', 'main', '', '', ':');
register_plugin_page('uprofile','edit','uprofile_editProfile',0);
register_plugin_page('uprofile','apply','uprofile_applyProfile',0);
register_plugin_page('uprofile','show','uprofile_showProfile',0);



// =============================================================
// External functions of plugin
// =============================================================
function uprofile_list() {
}


function uprofile_showProfile($params) {
    global $mysql, $lang, $tpl, $template, $SYSTEM_FLAGS, $PFILTERS;

    $SYSTEM_FLAGS['info']['title']['group']        = $lang['uprofile:header.view'];
    //LoadPluginLang('uprofile', 'users', '', '', ':');

    // Check if valid user identity is specified
    $urow = '';
    if (isset($params['id']) && (intval($params['id']) > 0)) {
        $urow = $mysql->record("select *, (SELECT SUM(n.views) FROM ".prefix."_news n WHERE u.id = n.author_id) AS cntviews from ".uprefix."_users u where id = ".intval($params['id']));
    } else if (isset($params['name'])) {
        $urow = $mysql->record("select *, (SELECT SUM(n.views) FROM ".prefix."_news n WHERE u.id = n.author_id) AS cntviews from ".uprefix."_users u where name = ".db_squote($params['name']));
    } else if (isset($_REQUEST['id'])) {
        $urow = $mysql->record("select *, (SELECT SUM(n.views) FROM ".prefix."_news n WHERE u.id = n.author_id) AS cntviews from ".uprefix."_users u where id = ".intval($_REQUEST['id']));
    } else if (isset($_REQUEST['name'])) {
        $urow = $mysql->record("select *, (SELECT SUM(n.views) FROM ".prefix."_news n WHERE u.id = n.author_id) AS cntviews from ".uprefix."_users u where name = ".db_squote($_REQUEST['name']));
    }
    if (!is_array($urow)) {
        msg(array("type" => "error", "text" => $lang['uprofile:msge_no_user']));
        return;
    }

    if (is_array($PFILTERS['plugin.uprofile']))
        foreach ($PFILTERS['plugin.uprofile'] as $k => $v) { $v->showProfilePre($urow['id'], $urow); }

    // Determine paths for all template files
    $tpath = locatePluginTemplates(array('users'), 'uprofile', pluginGetVariable('uprofile', 'localsource'));

    // Make page title
    $SYSTEM_FLAGS['info']['title']['group']    = $lang['loc_userinfo'];
    $SYSTEM_FLAGS['info']['title']['item']    = $urow['name'];

    $status = (($urow['status'] >= 1)&&($urow['status'] <= 4))?$lang['uprofile:st_'.$urow['status']]:$lang['uprofile:st_unknown'];

    // Check for new style of photos storing
    if (preg_match('/^'.$urow['id'].'\./', $urow['photo'])) {
        $uphoto = $urow['photo'];
    } else {
        $uphoto = $urow['id'].'.'.$urow['photo'];
    }

    // Check for new style of avatars storing
    if (preg_match('/^'.$urow['id'].'\./', $urow['avatar'])) {
        $uavatar = $urow['avatar'];
    } else {
        $uavatar = $urow['id'].'.'.$urow['avatar'];
    }

    $photo    = photos_url.'/'.(($urow['photo'] != "")?'thumb/'.$uphoto:'nophoto.gif');

    // GRAVATAR.COM integration ** BEGIN **
    if ($urow['avatar'] != '') {
        $avatar    = avatars_url.'/'.$uavatar;
    } else {
        if ($config['avatars_gravatar']) {
            $avatar    = 'http://www.gravatar.com/avatar/'.md5(strtolower($userROW['mail'])).'.jpg?s='.$config['avatar_wh'].'&d='.urlencode(avatars_url."/noavatar.gif");
        } else {
            $avatar = avatars_url."/noavatar.gif";
        }
    }
    // GRAVATAR.COM integration ** END **


    $tpl -> template('users', $tpath['users']);
    $tvars['vars'] = array(
        'user'        =>    $urow['name'],
        'news'        =>    $urow['news'].($urow['cntviews']?' ['.$urow['cntviews'].']':''),
        'com'        =>    $urow['com'],
        'status'    =>    $status,
        'last'        =>    langdate("j Q Y", $urow['last']),
        'reg'        =>    langdate("j Q Y", $urow['reg']),
        'site'        =>    secure_html($urow['site']),
        'icq'        =>    is_numeric($urow['icq']) ? '<a target="_blank" href="http://www.icq.com/people/about_me.php?uin='.$urow['icq'].'">'.$urow['icq'].'</a>' : secure_html($urow['icq']),
        'icqimg'    =>    is_numeric($urow['icq']) ? '<img src="http://status.icq.com/online.gif?icq='.$urow['icq'].'&img=1" />' : '',
        'from'        =>    secure_html($urow['where_from']),
        'info'        =>    secure_html($urow['info']),
        'photo'        =>    $photo,
        'photo_link'=>    ($urow['photo'] != "") ? photos_url.'/'.$uphoto:'',
        'avatar'    =>    $avatar
    );

    if (is_array($PFILTERS['plugin.uprofile']))
        foreach ($PFILTERS['plugin.uprofile'] as $k => $v) { $v->showProfile($urow['id'], $urow, $tvars); }

    $tpl -> vars('users', $tvars);
    $template['vars']['mainblock'] .= $tpl -> show('users');
}

function uprofile_editProfile(){

    // Call editForm routine
    uprofile_editForm();

}

function uprofile_applyProfile() {
    global $template, $userROW, $lang;

    // Check if user is logged in
    if (!is_array($userROW)) {
        msg(array("type" => "error", "text" => $lang['uprofile:msge_notlogged']));
        return;
    }

    // Call Apply changes routine
    uprofile_editApply();

    // Redirect back if we do not have any messages
    if (!$template['vars']['mainblock']) {
        @header("Location: ".generateLink('uprofile', 'edit', array()));
    } else {
        // We have some messages. Don't affect it, print editForm.
        uprofile_editForm();
    }
}



// =============================================================
// Internal functions of plugin
// =============================================================


// Show profile for specified user
function profile_show() {
    global $mysql;
}


// Show EDIT FORM for current user's profile
function uprofile_editForm(){
    global $mysql, $userROW, $lang, $config, $tpl, $template, $SYSTEM_FLAGS, $PFILTERS;

    $SYSTEM_FLAGS['info']['title']['group']        = $lang['uprofile:header.edit'];

    // Check if user is logged in
    if (!is_array($userROW)) {
        msg(array("type" => "error", "text" => $lang['uprofile:msge_notlogged']));
        return;
    }

    //
    // Show profile

    // Save current user's parameters
    $currentUser = $userROW;

    // Manage profile data [if needed]
    if (is_array($PFILTERS['plugin.uprofile']))
        foreach ($PFILTERS['plugin.uprofile'] as $k => $v) { $v->editProfileFormPre($currentUser['id'], $currentUser); }


    // Determine paths for all template files
    $tpath = locatePluginTemplates(array('profile'), 'uprofile', pluginGetVariable('uprofile', 'localsource'));

    // If AVATARs are enabled
    if ($config['use_avatars']) {
        if ($currentUser['avatar'] !== "") {
            // Check for new style of avatar storing
            if (preg_match('/^'.$currentUser['id'].'\./', $currentUser['avatar'])) {
                $avatar = $currentUser['avatar'];
            } else {
                $avatar = $currentUser['id'].'.'.$currentUser['avatar'];
            }

            $imgavatar = '<img src="'.avatars_url.'/'.$avatar.'" style="margin: 5px; border: 0px;" alt="" />';
            $delavatar = '<input type="checkbox" name="delavatar" id="delavatar" class="check" /> <label for="delavatar">'.$lang["uprofile:delete"].'</label>';
        }
        $showrow_avatar = '<input type="file" name="newavatar" size="40" /><br />'.$imgavatar.'<br />'.$delavatar;
    } else {
        $showrow_avatar = $lang['uprofile:avatars_denied'];
    }

    // If PHOTOS are enabled
    if ($config['use_photos']) {
        if ($currentUser['photo'] !== "") {
            // Check for new style of avatar storing
            if (preg_match('/^'.$currentUser['id'].'\./', $currentUser['photo'])) {
                $photo = $currentUser['photo'];
            } else {
                $photo = $currentUser['id'].'.'.$currentUser['photo'];
            }
            $imgphoto = '<a href="'.photos_url.'/'.$photo.'" target="_blank"><img src="'.photos_url.'/thumb/'.$photo.'" style="margin: 5px; border: 0px;" alt="" /></a>';
            $delphoto = '<input type="checkbox" name="delphoto" id="delphoto" class="check" /> <label for="delphoto">'.$lang["uprofile:delete"].'</label>';
        }
        $showrow_photo = '<input type="file" name="newphoto" size="40" /><br />'.$imgphoto.'<br />'.$delphoto;
    } else {
        $showrow_photo = $lang['uprofile:photos_denied'];
    }

    $status = (($currentUser['status'] >= 1)&&($currentUser['status'] <= 4))?$lang['uprofile:st_'.$currentUser['status']]:$lang['uprofile:st_unknown'];

    $tvars['vars'] = array(
        'php_self'    =>    $PHP_SELF,
        'name'        =>    $currentUser['name'],
        'regdate'    =>    LangDate("l, j Q Y - H:i", $currentUser['reg']),
        'last'        =>    (empty($currentUser['last'])) ? $lang['no_last'] : LangDate("l, j Q Y - H:i", $currentUser['last']),
        'status'    =>    $status,
        'news'        =>    $currentUser['news'],
        'comments'    =>    $currentUser['com'],
        'email'        =>    secure_html($currentUser['mail']),
        'ifchecked'    =>    $ifchecked,
        'site'        =>    secure_html($currentUser['site']),
        'icq'        =>    secure_html($currentUser['icq']),
        'from'        =>    secure_html($currentUser['where_from']),
        'about'        =>    secure_html($currentUser['info']),
        'about_sizelimit_text'    => str_replace('{limit}', intval($config['user_aboutsize']), $lang['uprofile:about_sizelimit']),
        'about_sizelimit'    => intval($config['user_aboutsize']),
        'avatar'    =>    $showrow_avatar,
        'photo'        =>    $showrow_photo,
        'form_action'    =>    generateLink('core', 'plugin', array('plugin' => 'uprofile', 'handler' => 'apply')),
    );

    if (is_array($PFILTERS['plugin.uprofile']))
        foreach ($PFILTERS['plugin.uprofile'] as $k => $v) { $v->editProfileForm($currentUser['id'], $currentUser, $tvars); }


    $tpl -> template('profile', $tpath['profile']);
    $tpl -> vars('profile', $tvars);
    $template['vars']['mainblock'] .= $tpl -> show('profile');
}


function uprofile_editApply(){
    global $mysql, $tpl, $lang, $template, $userROW, $auth_db, $config, $PFILTERS;

    // Load required library
    @include_once root.'includes/classes/upload.class.php';

    // Check if user is logged in
    if (!is_array($userROW)) {
        msg(array("type" => "error", "text" => $lang['uprofile:msge_notlogged']));
        return;
    }

    if (!isset($_POST['oldpass']) || (EncodePassword($_POST['oldpass']) != $userROW['pass'])) {
        msg(array("type" => "error", "text" => $lang['uprofile:msge_needoldpass']));
        return;
    }

    // Delete avatar if requested
    if ($_REQUEST['delavatar']) {
        uprofile_manageDelete('avatar', $userROW['id']);
    } else {
        $avatar = $userROW['avatar'];
    }

    // Delete photo if requested
    if ($_REQUEST['delphoto']) {
        uprofile_manageDelete('photo', $userROW['id']);
    } else {
        $photo = $userROW['photo'];
    }

    // UPLOAD AVATAR
    if ($_FILES['newavatar']['name']) {

        // Delete an avatar if user already has it
        uprofile_manageDelete('avatar', $userROW['id']);

        $fmanage = new file_managment();
        $imanage = new image_managment();
        $up = $fmanage->file_upload(array('type' => 'avatar', 'http_var' => 'newavatar', 'replace' => 1, 'manualfile' => $userROW['id'].'.'.strtolower($_FILES['newavatar']['name'])));

        if (is_array($up)) {
            // Now fetch information about size and prepare to write info into DB
            if (is_array($sz = $imanage->get_size($config['avatars_dir'].$up[1]))) {
                $fmanage->get_limits('avatar');

                // Check avatar size limit (!!!)
                $lwh = intval($config['avatar_wh']);
                if ($lwh && (($sz[1] > $lwh)||($sz[2] > $lwh))) {
                    // Fatal: uploaded avatar mismatch size limits !
                    msg(array("type" => "error", "text" => $lang['uprofile:msge_size'], "info" => sprintf($lang['uprofile:msgi_size'], $lwh.'x'.$lwh)));
                    $fmanage->file_delete(array('type' => 'avatar', 'id' => $up[0]));
                } else {
                    $mysql->query("update ".prefix."_".$fmanage->tname." set width=".db_squote($sz[1]).", height=".db_squote($sz[2])." where id = ".db_squote($up[0]));
                    $avatar = $up[1];
                }
            } else {
                // We were unable to fetch image size. Damaged file, delete it!
                msg(array("type" => "error", "text" => $lang['uprofile:msge_damaged']));
                $fmanage->file_delete(array('type' => 'avatar', 'id' => $up[0]));
            }
        }
    }

    // UPLOAD PHOTO
    if ($_FILES['newphoto']['name']) {

        // Delete a photo if user already has it
        uprofile_manageDelete('photo', $userROW['id']);

        $fmanage = new file_managment();
        $imanage = new image_managment();
        $up = $fmanage->file_upload(array('type' => 'photo', 'http_var' => 'newphoto', 'replace' => 1, 'manualfile' => $userROW['id'].'.'.strtolower($_FILES['newphoto']['name'])));
        if (is_array($up)) {
            // Now write info about image into DB
            if (is_array($sz = $imanage->get_size($config['photos_dir'].$subdirectory.'/'.$up[1]))) {
                $fmanage->get_limits('photo');

                // Create preview for photo
                $tsz = intval($config['photos_thumb_size']);
                if (($tsz < 10)||($tsz > 1000)) $tsz = 150;
                $thumb = $imanage->create_thumb($config['photos_dir'].$subdirectory, $up[1], $tsz,$tsz);

                // If we were unable to create thumb - delete photo, it's damaged!
                if (!$thumb) {
                    msg(array("type" => "error", "text" => $lang['uprofile:msge_damaged']));
                    $fmanage->file_delete(array('type' => 'avatar', 'id' => $up[0]));
                } else {
                    $mysql->query("update ".prefix."_".$fmanage->tname." set width=".db_squote($sz[1]).", height=".db_squote($sz[2]).", preview=1 where id = ".db_squote($up[0]));
                    $photo = $up[1];
                }
            } else {
                // We were unable to fetch image size. Damaged file, delete it!
                msg(array("type" => "error", "text" => $lang['uprofile:msge_damaged']));
                $fmanage->file_delete(array('type' => 'avatar', 'id' => $up[0]));
            }
        }
    }

    $sqlFields = array (
        'avatar' => $avatar,
        'photo' => $photo,
        'mail' => $_REQUEST['editmail'],
        'site' => $_REQUEST['editsite'],
        'icq' => is_numeric($_REQUEST['editicq'])?$_REQUEST['editicq']:'',
        'where_from' => $_REQUEST['editfrom'],
        'info' => (intval($config['user_aboutsize'])?substr($_REQUEST['editabout'],0,$config['user_aboutsize']):$_REQUEST['editabout'])
    );
    if ($_REQUEST['editpassword'] != '') {
        if (method_exists($auth_db, 'save_profile')) {
            $auth_db->save_profile($userROW['id'], array('password' => $_REQUEST['editpassword']));
        }
        $sqlFields['pass'] = EncodePassword($_REQUEST['editpassword']);
    }

    // Call external plugins for request processing
    if (is_array($PFILTERS['plugin.uprofile']))
        foreach ($PFILTERS['plugin.uprofile'] as $k => $v) { $v->editProfile($useROW['id'], $userROW, $sqlFields); }

    // Prepare SQL line
    $sqlF = array();
    foreach ($sqlFields as $f => $v)
        array_push($sqlF, $f . " = " . db_squote($v));

    $sqlUpdate = "update ".uprefix."_users set ".join(", ",$sqlF)." where id = ".db_squote($userROW['id']);
    $mysql->query($sqlUpdate);

    // Call external plugins for request processing
    if (is_array($PFILTERS['plugin.uprofile']))
        foreach ($PFILTERS['plugin.uprofile'] as $k => $v) { $v->editProfileNotify($useROW['id'], $userROW, $sqlFields); }


    return true;
}



function uprofile_manageDelete($type, $userID){
    global $mysql, $userROW;

    // Load required library
    @include_once root.'includes/classes/upload.class.php';

    $localUpdate = 0;
    $userID = intval($userID);

    if ($userID != $userROW['id']) {
        if (!is_array($uRow = $mysql->record("select * from ".uprefix."_users where id = ".$userID)))
         return;
    } else {
        $uRow = $userROW;
        $localUpdate = 1;
    }

    // Search for avatar record in mySQL table
    if (is_array($imageRow = $mysql->record("select * from ".prefix."_images where owner_id = ".$userID." and category = ".($type=='avatar'?1:2)))) {
        // Info was found in SQL table
        $fmanager = new file_managment();
        $fmanager->file_delete(array('type' => $type, 'id' => $imageRow['id']));
        //unlink(avatars_dir.$imageRow['name']);
    } else if ($uRow[$type]) {
        // Try to delete all avatars of this user
        @unlink($avatar_dir.$uRow['id'].'.*');
    }
    $mysql->query("update ".uprefix."_users set ".($type=='photo'?'photo':'avatar')." = '' where id = ".$userID);
    if ($localUpdate) $userROW[$type] = '';
}


Суета сует, - все суета... (Екклесиаст)
Дешевый и надежный хостинг

Не в сети

#21 2011-01-21 10:52:54

Wolverine
Модератор
Откуда Домодедово
Зарегистрирован: 2008-10-13
Сообщений: 3,538
Рейтинг :   160 
Сайт

Re: Статистика по пользователям

Я скопировал твой файл на новую инсталляцию движка, все работает...

6d06ed19284c2bcdd4e61228551b5036.jpg

Не в сети

#22 2011-01-21 19:55:16

Yukos
Участник
Откуда Рязанская обл. г. Скопин
Зарегистрирован: 2011-01-11
Сообщений: 116
Рейтинг :   
Сайт

Re: Статистика по пользователям

Мистика какая-то. Я еще надеялся, что может не работает на денвере. Сейчас загнал на тестовый домен - тоже не работает.Wolverine, вот можете сами убедиться http://games-manual.ru

Логин: yukos
пароль: 123


Суета сует, - все суета... (Екклесиаст)
Дешевый и надежный хостинг

Не в сети

#23 2011-01-21 20:01:36

Wolverine
Модератор
Откуда Домодедово
Зарегистрирован: 2008-10-13
Сообщений: 3,538
Рейтинг :   160 
Сайт

Re: Статистика по пользователям

Yukos, ты прикалываешься что ли lol e60ddfb6ee3b1b48d70acc13d5be99e3.jpg

Или ты говоришь про отсутствие просмотров отдельной строкой? Тогда тебе нужно проделать действия Или можно сделать отдельную переменную под просмотры,

Не в сети

#24 2011-01-21 20:14:25

Yukos
Участник
Откуда Рязанская обл. г. Скопин
Зарегистрирован: 2011-01-11
Сообщений: 116
Рейтинг :   
Сайт

Re: Статистика по пользователям

Wolverine, Вы что, меня самого уже трясет. Я никогда на форумах не тусовался и к своему стыду не знаю, как вставить картинку. Вот сейчас сделал скрин, подскажите как загрузить, сами увидите.


Суета сует, - все суета... (Екклесиаст)
Дешевый и надежный хостинг

Не в сети

#25 2011-01-21 20:17:02

Wolverine
Модератор
Откуда Домодедово
Зарегистрирован: 2008-10-13
Сообщений: 3,538
Рейтинг :   160 
Сайт

Re: Статистика по пользователям

Заходишь на http://photoload.ru/, там жмешь Обзор, выбираешь картинку с компа и жмешь Загрузить

Не в сети

Подвал раздела

Работает на FluxBB