/** * レコードを特定のキーで検索する。 */ 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; }