示例#1
0
 /**
  * レコードを特定のキーで検索する。
  */
 public function findAllBy($values = array(), $order = "", $reverse = false)
 {
     $select = new Vizualizer_Query_Select($this->access);
     $select->distinct($this->distinct);
     $select->addColumn($this->access->_W);
     if (is_array($values)) {
         foreach ($values as $key => $value) {
             $select = $this->appendWhere($select, $key, $value);
         }
     }
     // Adminパッケージを使っている場合で利用ユーザーが管理権限で無い場合は自分の作成したデータしか閲覧できない
     try {
         if (!$this->ignoreOperator) {
             // DBのカラムにoperator_idが存在し、Adminパッケージをインストールしている場合のみ有効
             if (class_exists("VizualizerAdmin") && !empty($this->access->operator_id)) {
                 $operator = Vizualizer_Session::get(VizualizerAdmin::SESSION_KEY);
                 // セッションからオペレータIDが取得できた場合のみ処理を実施
                 if (is_array($operator) && array_key_exists("operator_id", $operator) && $operator["operator_id"] > 0) {
                     // 管理者以外もしくは強制的にオペレータ適用のフラグを設定した場合のみオペレータIDの制限を付ける。
                     if (self::$limitedOperator) {
                         $select = $this->appendWhere($select, "operator_id", $operator["operator_id"]);
                     }
                 }
             }
         }
     } catch (Exception $e) {
         // Adminパッケージを使っていない場合は、条件の設定をスキップする。
     }
     if ($this->groupBy != null) {
         $select->addGroupBy($this->groupBy);
     }
     if (!empty($order)) {
         if (is_array($order)) {
             foreach ($order as $index => $ord) {
                 if (is_array($reverse)) {
                     if (isset($reverse[$index])) {
                         $select->addOrder($ord, $reverse[$index]);
                     } else {
                         $select->addOrder($ord, false);
                     }
                 } else {
                     $select->addOrder($ord, $reverse);
                 }
             }
         } else {
             if (is_array($reverse)) {
                 if (isset($reverse[0])) {
                     $select->addOrder($order, $reverse[0]);
                 } else {
                     $select->addOrder($order, false);
                 }
             } else {
                 $select->addOrder($order, $reverse);
             }
         }
     }
     $select->setLimit($this->limit, $this->offset);
     $sqlResult = $select->fetch($this->limit, $this->offset);
     $thisClass = get_class($this);
     $result = new Vizualizer_Plugin_ModelIterator($thisClass, $sqlResult);
     return $result;
 }