本文整理汇总了PHP中CSession::getCurrentTask方法的典型用法代码示例。如果您正苦于以下问题:PHP CSession::getCurrentTask方法的具体用法?PHP CSession::getCurrentTask怎么用?PHP CSession::getCurrentTask使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CSession
的用法示例。
在下文中一共展示了CSession::getCurrentTask方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: getLevelForCurrentTask
/**
* Уровень доступа к текущей задаче
*
* @return int
*/
public function getLevelForCurrentTask()
{
$level = ACCESS_LEVEL_NO_ACCESS;
$task = CSession::getCurrentTask();
if (!is_null($task)) {
if ($this->getRoles()->hasElement($task->getId())) {
$personTask = $this->getRoles()->getItem($task->getId());
$level = $personTask->level;
}
}
return $level;
}
示例2: initGlobalSearchSubform
/**
* Собираем данные для сабформы поиска
*/
private function initGlobalSearchSubform()
{
$search = array();
/**
* Инициализация левой части с параметрами поиска
*/
if (CRequest::getGlobalFilterClass() != "") {
$modelMeta = CCoreObjectsManager::getCoreModel(CRequest::getGlobalFilterClass());
if (!is_null($modelMeta)) {
$globalSearch = CRequest::getGlobalFilter();
if ($globalSearch["field"] !== false) {
/**
* Получаем название поля, по которому в данный
* момент выполняется поиск
*/
$translations = $modelMeta->getTranslationDefault();
$filterValue = $globalSearch["value"];
if (CRequest::getString("filterLabel") != "") {
$filterValue = CRequest::getString("filterLabel");
}
$search[$globalSearch["field"]] = $filterValue;
if (array_key_exists($globalSearch["field"], $translations)) {
unset($search[$globalSearch["field"]]);
$search[$translations[$globalSearch["field"]]] = $filterValue;
}
}
}
}
$this->setData("__search", $search);
/**
* Поиск только в рамках текущей задачи
*/
$this->setData("__current_task", "");
if (!is_null(CSession::getCurrentTask())) {
$this->setData("__current_task", CSession::getCurrentTask()->getId());
}
CSession::setCurrentController($this);
$this->setData("__controller", $this);
}
示例3: updateQueryForACLLimitations
/**
* Обновление поискового запроса с учетом прав доступа
* Делается из допущения, что текущая задача - эта задача, по
* которой выполняется основной запрос
*
* @return bool
*/
private function updateQueryForACLLimitations()
{
/**
* Для начала проверим, что текущая задача определяется
* Если не определяется, то менять ничего мы не можем -
* данных недостаточно
*/
$task = CSession::getCurrentTask();
if (is_null($task)) {
return false;
}
/**
* Теперь проверим, что найденная задача связана с какой-либо моделью
* Если модель определить не можем, то тоже выходим
*/
$targetModel = null;
foreach ($task->models->getItems() as $model) {
if (mb_strtolower($model->getModelTable()) == mb_strtolower($this->getTableName())) {
$targetModel = $model;
}
}
if (is_null($targetModel)) {
return false;
}
/**
* Теперь проверим, поддерживает ли эта модель работу с readers/authors-полями
* Если таких полей нет, то тоже нет смысла что-либо проверять
*/
if ($targetModel->getReadersFields()->getCount() == 0) {
return false;
}
/**
* Если у пользователя нет доступа к текущей задаче, то
* ставим в поля, регламентирующие доступ 0 - нулевого пользователя у нас точно нет
*
* Если доступ на чтение/запись только своего, то добавляем в readers-поля
* id текущего пользователя
*/
$q = array();
if (CSession::getCurrentUser()->getLevelForCurrentTask() == ACCESS_LEVEL_NO_ACCESS) {
foreach ($targetModel->getReadersFields()->getItems() as $field) {
$q[] = "(" . $this->getTableAlias() . "." . $field->field_name . "= 0)";
}
} elseif (CSession::getCurrentUser()->getLevelForCurrentTask() == ACCESS_LEVEL_READ_OWN_ONLY || CSession::getCurrentUser()->getLevelForCurrentTask() == ACCESS_LEVEL_WRITE_OWN_ONLY) {
foreach ($targetModel->getReadersFields()->getItems() as $field) {
$q[] = "(" . $this->getTableAlias() . "." . $field->field_name . "=" . CSession::getCurrentPerson()->getId() . ")";
}
}
if (count($q) > 0) {
$query = $this->getQuery();
$condition = $query->getCondition();
if (!is_null($condition)) {
$condition .= " AND ";
}
$condition .= "(" . implode(" OR ", $q) . ")";
$this->getQuery()->condition($condition);
}
}