/** * Скрывает или отображает платные проекты. * * @see projects_filter::ShowClosedProjects() * @see projects_filter::initClosedProjects() * * @param string $id id определенного или all для всех * @param string $type скрыть (hide) или показать (unhide) * @param int $kind тип текущей закладки главной страницы (см. new_projects::getProjects()) * @param int $page номер текущей страницы. * @param bool $filter включен ли фильтр у юзера. * * @return object xajaxResponse */ function HideProject($id, $type, $kind, $page, $filter) { session_start(); $objResponse = new xajaxResponse(); $all = $id == 'all'; $id = (int) $id; $uid = $_SESSION['uid']; if ($type == 'hide') { if ($all) { if ($tops = new_projects::getTopProjects()) { foreach ($tops as $t) { $_SESSION['ph'][$t['id']] = base64_encode($t['name']); $objResponse->assign("project-item{$t['id']}", 'outerHTML', ''); } } $nDH = $nH * count($_SESSION['ph']); unset($_SESSION['top_payed']); } else { $nDH = $nH; $_SESSION['ph'][$id] = base64_encode(projects::GetField($id, 'name')); $_SESSION['top_payed']--; $objResponse->assign("project-item{$id}", 'outerHTML', ''); } } else { if ($all && $_SESSION['ph']) { $nDH = -1 * $nH * count($_SESSION['ph']); unset($_SESSION['ph']); } else { $nDH = -1 * $nH; unset($_SESSION['ph'][$id]); if (!$_SESSION['ph']) { unset($_SESSION['ph']); } } if ($filter) { $prj_filter = new projects_filters(); $uf = $prj_filter->GetFilter($uid, $error); } $prj = new new_projects(); $content = $prj->SearchDB((int) $kind, (int) $page, 0, $uf, true); $objResponse->assign("projects-list", "innerHTML", $content); } if ($_SESSION['ph']) { $ccph = array_keys($_SESSION['ph']); } setcookie("ph[{$uid}]", $ccph ? implode(',', $ccph) : '', time() + 60 * 60 * 24 * 30, '/'); $content = projects_filters::ShowClosedProjects((int) $kind, (int) $page, (int) $filter); $objResponse->assign("flt-hide-content", "innerHTML", $content); $objResponse->assign("flt-hide-cnt", "innerHTML", sizeof($_SESSION['ph']) ? "(" . sizeof($_SESSION['ph']) . ")" : ""); // компенсируем изменение высоты блока скрытых проектов $objResponse->script("height=\$('flt-hide-content').getStyle('height').toInt()+'px';\$('flt-hide-content').getParent().setStyle('height', height);\n fbox=\$('flt-ph');fslider=new Fx.Slide(fbox.getElement('.flt-cnt'),{duration:400});\n fbox.f_isShw=fbox.hasClass('flt-show');fbox.getElement('.flt-cnt').setStyle('display','block');\n if(fbox.f_isShw){fslider.show();}else{fslider.hide();}"); return $objResponse; }
/** * Смотрит, есть ли проект, закрепленный выше данного. * @param array $prj данные текущего проекта. * @return boolean */ function checkShowTop(&$prj) { if (isset($prj['show_top'])) { $show_top = $prj['show_top']; } else { if (strtotime($prj['top_to']) > time()) { $tops = new_projects::getTopProjects(false, 1); $show_top = strtotime($tops[0]['top_from']) > strtotime($prj['top_from']); } } return $prj['show_top'] = $show_top; }