Пример #1
0
 /**
  * 返回当前用户拥有权限的数据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;
 }