Source for file Ethna_AppManager.php
Documentation is available at Ethna_AppManager.php
// vim: foldmethod=marker
* @author Masaki Fujimoto <fujimoto@php.net>
* @license http://www.opensource.org/licenses/bsd-license.php The BSD License
/** アプリケーションオブジェクト状態: 使用可能 */
define('OBJECT_STATE_ACTIVE', 0);
/** アプリケーションオブジェクト状態: 使用不可 */
define('OBJECT_STATE_INACTIVE', 100);
/** アプリケーションオブジェクトソートフラグ: 昇順 */
/** アプリケーションオブジェクトソートフラグ: 降順 */
define('OBJECT_SORT_DESC', 1);
/** アプリケーションオブジェクトインポートオプション: NULLプロパティ無変換 */
define('OBJECT_IMPORT_IGNORE_NULL', 1);
/** アプリケーションオブジェクトインポートオプション: NULLプロパティ→空文字列変換 */
define('OBJECT_IMPORT_CONVERT_NULL', 2);
* @author Masaki Fujimoto <fujimoto@php.net>
/** @var object Ethna_Backend backendオブジェクト */
/** @var object Ethna_Config 設定オブジェクト */
/** @var object Ethna_DB DBオブジェクト */
/** @var object Ethna_I18N i18nオブジェクト */
/** @var object Ethna_ActionForm アクションフォームオブジェクト */
/** @var object Ethna_ActionForm アクションフォームオブジェクト(省略形) */
/** @var object Ethna_Session セッションオブジェクト */
* Ethna_AppManagerのコンストラクタ
* @param object Ethna_Backend &$backend backendオブジェクト
$this->backend =
& $backend;
$this->config =
& $backend->getConfig();
$this->i18n =
& $backend->getI18N();
$this->action_form =
& $backend->getActionForm();
$this->af =
& $this->action_form;
$this->session =
& $backend->getSession();
$db_list =
$backend->getDBList();
foreach ($db_list as $elt) {
$varname =
$elt['varname'];
$this->$varname =
& $elt['db'];
* @param string $attr_name 属性の名前(変数名)
$varname =
$attr_name .
"_list";
* @param string $attr_name 属性の名前(変数名)
$varname =
$attr_name .
"_list";
if (is_array($this->$varname) ==
false) {
$list =
& $this->$varname;
if (isset
($list[$id]) ==
false) {
return $list[$id]['name'];
* @param string $attr_name 属性の名前(変数名)
* @return string 属性の詳細表示名
$varname =
$attr_name .
"_list";
if (is_array($this->$varname) ==
false) {
$list =
& $this->$varname;
if (isset
($list[$id]['long_name']) ==
false) {
return $list[$id]['long_name'];
* @param string $class Ethna_AppObjectの継承クラス名
* @param array $filter 検索条件
* @param array $order 検索結果ソート条件
* @param int $offset 検索結果取得オフセット
* @param int $count 検索結果取得数
* @return mixed array(0 => 検索条件にマッチした件数, 1 => $offset, $countにより指定された件数のオブジェクトID一覧) Ethna_Error:エラー
* @todo パフォーマンス対策(1オブジェクトの占有メモリが多い場合)
$order =
null, $offset =
null, $count =
null)
global $_ETHNA_APP_MANAGER_OL_CACHE;
if (is_array($_ETHNA_APP_MANAGER_OL_CACHE) ==
false
$_ETHNA_APP_MANAGER_OL_CACHE[$cache_class] =
array();
$cache_key =
serialize(array($filter, $order, $offset, $count));
list
($length, $prop_list)
=
$_ETHNA_APP_MANAGER_OL_CACHE[$cache_class][$cache_key];
$tmp =
& new $class_name($this->backend);
list
($length, $prop_list)
=
$tmp->searchProp(null, $filter, $order, $offset, $count);
$_ETHNA_APP_MANAGER_OL_CACHE[$cache_class][$cache_key]
=
array($length, $prop_list);
foreach ($prop_list as $prop) {
$object =
& new $class_name($this->backend, null, null, $prop);
$object_list[] =
$object;
return array($length, $object_list);
* getObjectList()メソッドは条件にマッチするIDを元にEthna_AppObjectを生成する
* ためコストがかかる。こちらはプロパティのみをSELECTするので低コストでデータ
* @param string $class Ethna_AppObjectの継承クラス名
* @param array $keys 取得するプロパティ一覧(nullなら全て)
* @param array $filter 検索条件
* @param array $order 検索結果ソート条件
* @param int $offset 検索結果取得オフセット
* @param int $count 検索結果取得数
* @return mixed array(0 => 検索条件にマッチした件数,
* 1 => $offset, $countにより指定された件数のプロパティ一覧)
$order =
null, $offset =
null, $count =
null)
global $_ETHNA_APP_MANAGER_OPL_CACHE;
if (is_array($_ETHNA_APP_MANAGER_OPL_CACHE) ==
false
$_ETHNA_APP_MANAGER_OPL_CACHE[$cache_class] =
array();
$cache_key =
serialize(array($filter, $order, $offset, $count));
if (array_key_exists($cache_key, $_ETHNA_APP_MANAGER_OPL_CACHE[$cache_class])) {
$tmp =
& new $class_name($this->backend);
$_ETHNA_APP_MANAGER_OPL_CACHE[$cache_class][$cache_key]
=
$tmp->searchProp($keys, $filter, $order, $offset, $count);
return $_ETHNA_APP_MANAGER_OPL_CACHE[$cache_class][$cache_key];
* getObjectPropList()メソッドの簡易版で、$filterにより結果が1エントリに
* 制限される場合(プライマリキーでの検索等)に利用する
* @param string $class Ethna_AppObjectの継承クラス名
* @param array $keys 取得するプロパティ一覧
* @param array $filter 検索条件
* @return mixed array:プロパティ一覧 null:エントリなし Ethna_Error:エラー
global $_ETHNA_APP_MANAGER_OP_CACHE;
if (is_array($_ETHNA_APP_MANAGER_OP_CACHE) ==
false
$_ETHNA_APP_MANAGER_OP_CACHE[$cache_class] =
array();
$tmp =
& new $class_name($this->backend);
list
(, $prop) =
$tmp->searchProp($keys, $filter);
$_ETHNA_APP_MANAGER_OP_CACHE[$cache_class][$cache_key]
=
count($prop) >
0 ?
$prop[0] :
null;
return $_ETHNA_APP_MANAGER_OP_CACHE[$cache_class][$cache_key];
Documentation generated on Fri, 11 Nov 2011 03:59:08 +0900 by phpDocumentor 1.4.3