/** * 返回当前用户拥有权限的数据pk */ public function getPrivPks($user = NULL, $type = '') { if ($user == NULL) { $user = Yii::app()->user->id; $org = Yii::app()->user->org["all"]; $role = array_keys(Yii::app()->user->role); $position = array_keys(Yii::app()->user->position); } else { $userModel = User::model()->findByPk($user); $org = $userModel->org["all"]; $role = array_keys($userModel->getRole()); $position = array_keys($userModel->getPosition()); } $role = TUtil::trim($role); $model = $this->owner->tableName(); foreach ($this->config as $item) { if ($item['type'] == $type) { if (!is_array($item['scope']) || sizeof($item['scope']) == 0) { $item['scope'] = $this->privScopes; } $sql = ''; $ids = array(); foreach ($item['scope'] as $scope) { $table = self::PRIV_TABLE_PREFIX . $scope; $field = $scope . '_id'; $sql = "select " . TUtil::qc($table . ".pk") . " FROM " . TUtil::qc("{$table}") . " WHERE "; $scopeValue = ${$scope}; if (!empty($scopeValue)) { if (is_numeric($scopeValue)) { $sql .= TUtil::qc($table . "." . $field) . " = {$scopeValue} AND " . TUtil::qc($table . ".model") . "= '{$model}' AND " . TUtil::qc($table . ".pk") . " IS NOT NULL"; } else { if (is_array($scopeValue)) { $sql .= TUtil::qc($table . "." . $field) . ' IN (\'' . implode('\', \'', array_unique($scopeValue)) . '\') AND ' . TUtil::qc($table . ".model") . "= '{$model}' AND " . TUtil::qc($table . ".pk") . " IS NOT NULL"; } } $privData = Yii::app()->db->createCommand($sql)->queryAll(); } if (!empty($privData)) { foreach ($privData as $priv) { $ids[] = $priv['pk']; } } } } } return $ids; }