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