* @license BSD
 */
defined('COT_CODE') or die('Wrong URL.');
require_once cot_incfile('projects', 'module');
list($pn, $p, $d_url) = cot_import_pagenav('p', $cfg['projects']['indexlimit']);
list($usr['auth_read'], $usr['auth_write'], $usr['isadmin']) = cot_auth('projects', 'any', 'RWA');
$t_pr = new XTemplate(cot_tplfile('projects.index', 'module'));
if (is_array($projects_types)) {
    foreach ($projects_types as $i => $pr_type) {
        $t_pr->assign(array('PTYPE_ROW_ID' => $i, 'PTYPE_ROW_TITLE' => $pr_type, 'PTYPE_ROW_URL' => cot_url('projects', 'type=' . $i)));
        $t_pr->parse("SEARCH.PTYPES.PTYPES_ROWS");
    }
}
$t_pr->assign(array('PTYPE_ALL_URL' => cot_url('projects', ''), 'REALIZED_URL' => cot_url('projects', 'realized=1'), "FORPRO_URL" => cot_url('projects', 'forpro=1')));
$t_pr->parse("SEARCH.PTYPES");
$t_pr->assign(array('SEARCH_ACTION_URL' => cot_url('projects', '', '', true), 'SEARCH_SQ' => cot_inputbox('text', 'sq', htmlspecialchars($sq), 'class="schstring"'), "SEARCH_CAT" => cot_projects_selectcat($c, 'c'), "SEARCH_SORTER" => cot_selectbox($sort, "sort", array('', 'costasc', 'costdesc'), array($L['projects_mostrelevant'], $L['projects_costasc'], $L['projects_costdesc']), false)));
foreach ($cot_extrafields[$db_projects] as $exfld) {
    $uname = strtoupper($exfld['field_name']);
    $exfld_val = cot_build_extrafields($exfld['field_name'], $exfld, '');
    $exfld_title = isset($L['projects_' . $exfld['field_name'] . '_title']) ? $L['projects_' . $exfld['field_name'] . '_title'] : $exfld['field_description'];
    $t_pr->assign(array('SEARCH_' . $uname => $exfld_val, 'SEARCH_' . $uname . '_TITLE' => $exfld_title));
}
/* === Hook === */
foreach (cot_getextplugins('projects.index.searchtags') as $pl) {
    include $pl;
}
/* ===== */
$t_pr->parse('SEARCH');
$t->assign('PROJECTS_SEARCH', $t_pr->text('SEARCH'));
// Количество реализованных проектов
$sql = $db->query("SELECT COUNT(*) FROM {$db_projects} WHERE item_state=0 AND item_realized=1");
$sqllist = $db->query("SELECT p.*, u.* {$join_columns} \n\tFROM {$db_projects} AS p {$join_condition}\n\tLEFT JOIN {$db_users} AS u ON u.user_id=p.item_userid\n\t" . $where . "\n\t" . $order . "\n\tLIMIT {$d}, " . $maxrowsperpage);
$pagenav = cot_pagenav('projects', $list_url_path, $d, $totalitems, $maxrowsperpage);
$catpatharray[] = array(cot_url('projects'), $L['projects']);
if (!empty($c)) {
    $catpatharray = array_merge($catpatharray, cot_structure_buildpath('projects', $c));
}
$catpath = cot_breadcrumbs($catpatharray, $cfg['homebreadcrumb'], true);
if (is_array($projects_types)) {
    foreach ($projects_types as $i => $pr_type) {
        $t->assign(array("PTYPE_ROW_ID" => $i, "PTYPE_ROW_TITLE" => $pr_type, "PTYPE_ROW_URL" => cot_url('projects', 'c=' . $c . '&type=' . $i), "PTYPE_ROW_ACT" => $type == $i ? 'act' : ''));
        $t->parse("MAIN.PTYPES.PTYPES_ROWS");
    }
}
$t->assign(array("PTYPE_ALL_URL" => cot_url('projects', 'c=' . $c), "PTYPE_ALL_ACT" => empty($type) && empty($realized) ? true : false, "REALIZED_URL" => cot_url('projects', 'c=' . $c . '&realized=1'), "FORPRO_URL" => cot_url('projects', 'c=' . $c . '&type=' . $type . '&forpro=1'), "REALIZED_ACT" => !empty($realized) ? true : false, "SUBMITNEWPROJECT_URL" => cot_url('projects', 'm=add&c=' . $c . '&type=' . $type)));
$t->parse("MAIN.PTYPES");
$t->assign(array("SEARCH_ACTION_URL" => cot_url('projects', "&type=" . $type, '', true), "SEARCH_SQ" => cot_inputbox('text', 'sq', htmlspecialchars($sq), 'class="schstring"'), "SEARCH_CAT" => cot_projects_selectcat($c, 'c'), "SEARCH_SORTER" => cot_selectbox($sort, "sort", array('', 'costasc', 'costdesc'), array($L['projects_mostrelevant'], $L['projects_costasc'], $L['projects_costdesc']), false), "PAGENAV_PAGES" => $pagenav['main'], "PAGENAV_PREV" => $pagenav['prev'], "PAGENAV_NEXT" => $pagenav['next'], "PAGENAV_COUNT" => $totalitems, "CATALOG" => cot_build_structure_projects_tree('', array($c)), "BREADCRUMBS" => $catpath, "CATTITLE" => !empty($c) ? $structure['projects'][$c]['title'] : '', "CATDESC" => !empty($c) ? $structure['projects'][$c]['desc'] : '', "SUBMITNEWPROJECT_URL" => cot_url('projects', 'm=add&c=' . $c . '&type=' . $type)));
foreach ($cot_extrafields[$db_projects] as $exfld) {
    $uname = strtoupper($exfld['field_name']);
    $exfld_val = cot_build_extrafields($exfld['field_name'], $exfld, $shfld[$exfld['field_name']]);
    $exfld_title = isset($L['projects_' . $exfld['field_name'] . '_title']) ? $L['projects_' . $exfld['field_name'] . '_title'] : $exfld['field_description'];
    $t->assign(array('SEARCH_' . $uname => $exfld_val, 'SEARCH_' . $uname . '_TITLE' => $exfld_title));
}
/* === Hook === */
foreach (cot_getextplugins('projects.list.search.tags') as $pl) {
    include $pl;
}
/* ===== */
$sqllist_rowset = $sqllist->fetchAll();
$sqllist_idset = array();
foreach ($sqllist_rowset as $item) {
    $sqllist_idset[$item['item_id']] = $item['item_alias'];
}
/* ===== */
$where = $where ? 'WHERE ' . implode(' AND ', $where) : '';
$order = $order ? 'ORDER BY ' . implode(', ', $order) : '';
$totalitems = $db->query("SELECT COUNT(*) FROM {$db_projects} \n\t" . $where . "")->fetchColumn();
$sqllist = $db->query("SELECT * FROM {$db_projects} AS p LEFT JOIN {$db_users} AS u ON u.user_id=p.item_userid\n\t" . $where . " \n\t" . $order . " \n\tLIMIT {$d}, " . $cfg['maxrowsperpage']);
$pagenav = cot_pagenav('admin', $list_url_path, $d, $totalitems, $cfg['maxrowsperpage']);
if (is_array($projects_types)) {
    foreach ($projects_types as $i => $pr_type) {
        $t->assign(array("TYPE_ROW_TITLE" => $pr_type, "TYPE_ROW_URL" => cot_url('admin', 'm=projects&c=' . $c . '&type=' . $i), "TYPE_ROW_ACT" => $type == $i ? 'act' : ''));
        $t->parse("MAIN.TYPES.TYPES_ROWS");
    }
}
$t->assign(array('TYPE_ALL_URL' => cot_url('admin', 'm=projects&c=' . $c), 'TYPE_ALL_ACT' => empty($type) ? 'act' : ''));
$t->parse('MAIN.TYPES');
$t->assign(array("SEARCH_ACTION_URL" => cot_url('admin', "m=projects&c=" . $c . "&type=" . $type, '', true), "SEARCH_SQ" => cot_inputbox('text', 'sq', $sq, 'class="schstring"'), "SEARCH_STATE" => cot_radiobox($state, 'state', array(0, 1, 2), array('опубликованные', 'скрытые', 'на проверке')), "SEARCH_CAT" => cot_projects_selectcat($c, 'c'), "SEARCH_SORTER" => cot_selectbox($sort, "sort", array('', 'costasc', 'costdesc'), array($L['projects_mostrelevant'], $L['projects_costasc'], $L['projects_costdesc']), false), 'TYPES_EDIT' => cot_url('admin', 'm=projects&p=types'), 'PAGENAV_PAGES' => $pagenav['main'], 'PAGENAV_PREV' => $pagenav['prev'], 'PAGENAV_NEXT' => $pagenav['next'], 'CATALOG' => cot_build_structure_projects_tree('', array($c)), 'CATTITLE' => !empty($c) ? ' / ' . !empty($c) ? ' / ' . htmlspecialchars($structure['projects'][$c]['title']) : '' : ''));
$sqllist_rowset = $sqllist->fetchAll();
$sqllist_idset = array();
foreach ($sqllist_rowset as $item) {
    $sqllist_idset[$item['item_id']] = $item['item_alias'];
}
/* === Hook === */
$extp = cot_getextplugins('projects.admin.list.loop');
/* ===== */
foreach ($sqllist_rowset as $item) {
    $jj++;
    $t->assign(cot_generate_usertags($item, 'PRJ_ROW_OWNER_'));
    $t->assign(cot_generate_projecttags($item, 'PRJ_ROW_', $cfg['projects']['shorttextlen'], $usr['isadmin'], $cfg['homebreadcrumb']));
    $t->assign(array('PRJ_ROW_ODDEVEN' => cot_build_oddeven($jj), 'PRJ_ROW_EDIT_URL' => cot_url('projects', 'm=edit&id=' . $item['item_id']), 'PRJ_ROW_VALIDATE_URL' => cot_url('admin', 'm=projects&p=default&a=validate&id=' . $item['item_id']), 'PRJ_ROW_DELETE_URL' => cot_url('admin', 'm=projects&p=default&a=delete&id=' . $item['item_id'])));
    /* === Hook - Part2 : Include === */
    foreach ($extp as $pl) {