Ответить
1
Список материалов пользователя
Отправлено: 5 Мар 2012#1
Вот скрипт показывает все файлы пользователя. На стабильной и альфа версиях вроде работает. Ставьте на свой страх и риск - скрипт сделал чтоб работало, а ошибки исправит Drunya
Откройте /modules/loads/index.php
и перед
Вставьте:
файлы пользователя доступны по адресу http://сайт/loads/user_files/айди_юзера
Откройте /modules/loads/index.php
и перед
Code:
}
?>
?>
Вставьте:
Code:
public function user_files($user_id) {
//turn access
$this->ACL->turn(array('loads', 'view_list'));
//формируем блок со списком разделов
$this->_getCatsTree();
if ($this->cached && $this->Cache->check($this->cacheKey)) {
$html = $this->Cache->read($this->cacheKey);
} else {
//Узнаем кол-во материалов в БД
$total = $this->DB->select('loads', DB_COUNT, array('cond' => array('available' => '1','author_id' => $user_id)));
$cntPages = ceil( $total / Config::read('per_page', 'loads') );
if ( isset($_GET['page']) ) {
$page = (int)$_GET['page'];
if ( $page < 1 ) $page = 1;
} else {
$page = 1;
}
if ( $page > $cntPages ) $page = $cntPages;
$pages = ($cntPages > 1) ? pagination($page, $cntPages, '/loads/user_files/'.$user_id) : ' ';
//navigation panel
$navi = array();
if ($this->ACL->turn(array('loads', 'add_materials'), false))
$navi['{ADD_LINK}'] = '<div class="submit"><a class="a_submit" href="/loads/add_form">Добавить материал</a></div>';
$navi['{NAVIGATION}'] = get_link(__('Home'), '/') . __('Separator') . get_link(h($this->module_title),'/loads/') . __('Separator') . 'Файлы пользователя';
$navi['{PAGINATION}'] = $pages;
$navi['{META}'] = __('Count all material') . $total;
$this->_globalize($navi);
if ($total == 0) {
$html = 'Пользователь не выложил файлы :(';
return $this->_view($html);
}
$html = '';
// get data
$conditions = array();
if (!$this->ACL->turn(array('other', 'can_see_hidden'), false)) $conditions['`a`.`available`'] = '1';
$sql = $this->DB->select('loads', DB_ALL, array(
'joins' => array(
array(
'table' => 'loads_sections',
'type' => 'LEFT',
'alias' => 'b',
'cond' => 'a.`category_id` = b.`id`',
),
array(
'table' => 'users',
'type' => 'LEFT',
'alias' => 'd',
'cond' => 'd.`id` = a.`author_id`',
),
),
'fields' => array('a.*', 'b.`title` as category_name','d.`name` AS author'
, 'd.`status` AS author_status'),
'alias' => 'a',
'cond' => array("`author_id` = '" . $user_id . "'"),
'order' => getOrderParam(__CLASS__),
'page' => $page,
'limit' => Config::read('per_page', 'loads'),
));
// Additional fields
if (is_object($this->AddFields) && count($sql) > 0) {
$sql = $this->AddFields->mergeRecords($sql);
}
// get ids list
$ids = array();
foreach ($sql as $result) {
$ids[] = $result['id'];
}
$ids = implode(', ', $ids);
$attaches = $this->DB->select($this->module . '_attaches', DB_ALL, array('cond' => array('`entity_id` IN ('.$ids.')')));
//ITERATION RECORDS
foreach ($sql as $result) {
$markets = array();
$result = $this->Parser->quoteTags($result);
$_SESSION['current_vars'] = $result;
$htmlloads = $this->Parser->getAndParse('tablemat.html');
$rec_attaches = array();
if (!empty($attaches) && count($attaches) > 0) {
foreach ($attaches as $k => $attach) {
if ($attach['entity_id'] == $result['id']) {
$rec_attaches[] = $attach;
unset($attaches[$k]);
}
}
}
$markets['{MODER_PANEL}'] = $this->_getAdminBar($result);
$entry_url = get_url(entryUrl($result, $this->module));
$markets['{ENTRY_URL}'] = $entry_url;
$announce = $this->Parser->unquoteTags($result['description']);
// replace image tags in text
if (!empty($rec_attaches) && count($rec_attaches) > 0) {
$attachDir = R . 'sys/files/' . $this->module . '/';
foreach ($rec_attaches as $attach) {
if ($attach['is_image'] == 1 && file_exists($attachDir . $attach['filename'])) {
$announce = str_replace('{IMAGE'.$attach['attach_number'].'}'
, '[img]' . get_url('/sys/files/'.$this->module.'/'.$attach['filename']).'[/img]'
, $announce);
}
}
}
$announce = $this->Textarier->getAnnounce($announce, $entry_url, 0,
Config::read('announce_lenght', 'loads'), $result);
$markets['{ANNOUNCE}'] = $this->Parser->quoteTags($announce);
foreach ($result as $key=>$value) {
$markets['{'.strtoupper($key).'}'] = h($value);
}
$markets['{LOADS}'] = $result['downloads'];
$markets['{PROFILE_URL}'] = getProfileUrl($result['author_id']);
$markets['{CATEGORY_URL}'] = get_url('/loads/category/' . $result['category_id']);
$html .= $this->_replaceMarkets($markets, $htmlloads);
//prepear cache tags
$this->setCacheTag(array(
'user_id_' . $result['author_id'],
'record_id_' . $result['id'],
));
}
$materials_tpl = $this->Parser->getAndParse('materials_container.html');
$markets = array(
'{MATERIALS}' => $html,
);
$html = $this->_replaceMarkets($markets, $materials_tpl);
if ($this->cached)
$this->Cache->write($html, $this->cacheKey, $this->cacheTags);
}
return $this->_view($html);
}
//turn access
$this->ACL->turn(array('loads', 'view_list'));
//формируем блок со списком разделов
$this->_getCatsTree();
if ($this->cached && $this->Cache->check($this->cacheKey)) {
$html = $this->Cache->read($this->cacheKey);
} else {
//Узнаем кол-во материалов в БД
$total = $this->DB->select('loads', DB_COUNT, array('cond' => array('available' => '1','author_id' => $user_id)));
$cntPages = ceil( $total / Config::read('per_page', 'loads') );
if ( isset($_GET['page']) ) {
$page = (int)$_GET['page'];
if ( $page < 1 ) $page = 1;
} else {
$page = 1;
}
if ( $page > $cntPages ) $page = $cntPages;
$pages = ($cntPages > 1) ? pagination($page, $cntPages, '/loads/user_files/'.$user_id) : ' ';
//navigation panel
$navi = array();
if ($this->ACL->turn(array('loads', 'add_materials'), false))
$navi['{ADD_LINK}'] = '<div class="submit"><a class="a_submit" href="/loads/add_form">Добавить материал</a></div>';
$navi['{NAVIGATION}'] = get_link(__('Home'), '/') . __('Separator') . get_link(h($this->module_title),'/loads/') . __('Separator') . 'Файлы пользователя';
$navi['{PAGINATION}'] = $pages;
$navi['{META}'] = __('Count all material') . $total;
$this->_globalize($navi);
if ($total == 0) {
$html = 'Пользователь не выложил файлы :(';
return $this->_view($html);
}
$html = '';
// get data
$conditions = array();
if (!$this->ACL->turn(array('other', 'can_see_hidden'), false)) $conditions['`a`.`available`'] = '1';
$sql = $this->DB->select('loads', DB_ALL, array(
'joins' => array(
array(
'table' => 'loads_sections',
'type' => 'LEFT',
'alias' => 'b',
'cond' => 'a.`category_id` = b.`id`',
),
array(
'table' => 'users',
'type' => 'LEFT',
'alias' => 'd',
'cond' => 'd.`id` = a.`author_id`',
),
),
'fields' => array('a.*', 'b.`title` as category_name','d.`name` AS author'
, 'd.`status` AS author_status'),
'alias' => 'a',
'cond' => array("`author_id` = '" . $user_id . "'"),
'order' => getOrderParam(__CLASS__),
'page' => $page,
'limit' => Config::read('per_page', 'loads'),
));
// Additional fields
if (is_object($this->AddFields) && count($sql) > 0) {
$sql = $this->AddFields->mergeRecords($sql);
}
// get ids list
$ids = array();
foreach ($sql as $result) {
$ids[] = $result['id'];
}
$ids = implode(', ', $ids);
$attaches = $this->DB->select($this->module . '_attaches', DB_ALL, array('cond' => array('`entity_id` IN ('.$ids.')')));
//ITERATION RECORDS
foreach ($sql as $result) {
$markets = array();
$result = $this->Parser->quoteTags($result);
$_SESSION['current_vars'] = $result;
$htmlloads = $this->Parser->getAndParse('tablemat.html');
$rec_attaches = array();
if (!empty($attaches) && count($attaches) > 0) {
foreach ($attaches as $k => $attach) {
if ($attach['entity_id'] == $result['id']) {
$rec_attaches[] = $attach;
unset($attaches[$k]);
}
}
}
$markets['{MODER_PANEL}'] = $this->_getAdminBar($result);
$entry_url = get_url(entryUrl($result, $this->module));
$markets['{ENTRY_URL}'] = $entry_url;
$announce = $this->Parser->unquoteTags($result['description']);
// replace image tags in text
if (!empty($rec_attaches) && count($rec_attaches) > 0) {
$attachDir = R . 'sys/files/' . $this->module . '/';
foreach ($rec_attaches as $attach) {
if ($attach['is_image'] == 1 && file_exists($attachDir . $attach['filename'])) {
$announce = str_replace('{IMAGE'.$attach['attach_number'].'}'
, '[img]' . get_url('/sys/files/'.$this->module.'/'.$attach['filename']).'[/img]'
, $announce);
}
}
}
$announce = $this->Textarier->getAnnounce($announce, $entry_url, 0,
Config::read('announce_lenght', 'loads'), $result);
$markets['{ANNOUNCE}'] = $this->Parser->quoteTags($announce);
foreach ($result as $key=>$value) {
$markets['{'.strtoupper($key).'}'] = h($value);
}
$markets['{LOADS}'] = $result['downloads'];
$markets['{PROFILE_URL}'] = getProfileUrl($result['author_id']);
$markets['{CATEGORY_URL}'] = get_url('/loads/category/' . $result['category_id']);
$html .= $this->_replaceMarkets($markets, $htmlloads);
//prepear cache tags
$this->setCacheTag(array(
'user_id_' . $result['author_id'],
'record_id_' . $result['id'],
));
}
$materials_tpl = $this->Parser->getAndParse('materials_container.html');
$markets = array(
'{MATERIALS}' => $html,
);
$html = $this->_replaceMarkets($markets, $materials_tpl);
if ($this->cached)
$this->Cache->write($html, $this->cacheKey, $this->cacheTags);
}
return $this->_view($html);
}
файлы пользователя доступны по адресу http://сайт/loads/user_files/айди_юзера
Отредактировано автором 5 Мар 2012
Отправлено: 6 Мар 2012#2
о круто) Сенк. Надо будет вставить в сборку
Я горжусь тем, что создал бесплатную CMS - AtomX . И люблю нашу команду)
1
Зарегистрируйтесь или авторизуйтесь что бы писать
Сейчас online: 74. Зарегистрированных: 1. Гостей: 73.
Google[bot]