get_access_array(user_id = 0, site_id = 0, flush = false)メソッド
説明
アクセスを無視して設定します。
共通変数
CONFIG, init_finished
静的変数
access_array
1 access_arrayに値がない または、init_finishedがfalseであった場合
1.1 access_arrayを配列で初期化する
2 user_idが0であった場合
2.1 user_id = $SESSION['id']を代入
3 site_idが0 かつ、CONFIG->site_idに値がセットされていた場合
3.1 site_id = CONFIG->site_idを代入
4 user_idをintに変換
5 site_idをintに変換
6 access_array[$user_id])に値がなく または、flushがtrueであった場合
6.1 tmp_access_array変数をarray(ACCESS_PUBLIC)で初期化
6.2 isloggedin()がtrueであった場合
※ユーザーがログインしているか?
6.2.1 tmp_access_array[] = ACCESS_LOGGED_INを代入
6.2.2 "SELECT am.access_collection_id FROM " + CONFIG->dbprefix +
"access_collection_membership am " +
" LEFT JOIN " + CONFIG->dbprefix +
" access_collections ag ON ag.id = am.access_collection_id " +
" WHERE am.user_guid = " + user_id +
" AND (ag.site_guid = " + site_id + " OR ag.site_guid = 0)"
上記SQL文をquery変数へ代入
6.2.3 collections = get_data(query)で取得したデータを代入
6.2.4 collectionsをforeachでまわす(collection)
6.2.4.1 collection-> access_collection_idに値が存在する場合
6.2.4.1.1
tmp_access_array[] = collection-> access_collection_idを代入
6.2.5 "SELECT ag.id FROM " + CONFIG->dbprefix + "access_collections ag " +
" WHERE ag.owner_guid = " + user_id +
" AND (ag.site_guid = " + site_id + " OR ag.site_guid = 0)"
上記SQL文をquery変数へ代入
6.2.6 collections = get_data(query)で取得したデータを代入
6.2.7 collectionsをforeachでまわす(collection)
6.2.7.1 collection->idに値が存在する場合
6.2.7.1.1 tmp_access_array[] = collection->idを代入
6.2.8 ignore_access = elgg_check_access_overrides(user_id)
アクセスシステムは無視されているかどうかを決定します。
6.2.9 ignore_accessがtrueであった場合
6.2.9.1 tmp_access_array[] = ACCESS_PRIVATEを代入
6.2.9.2 access_array[user_id] = tmp_access_arrayを代入
6.3 isloggedin()がfalseであった場合
6.3.1 tmp_return = tmp_access_arrayを代入
7 access_array[$user_id])に値があり または、flushがfalseであった場合
7.1 tmp_access_array = access_array[user_id]を代入
8 trigger_plugin_hook
('access:collections:read', 'user',
array('user_id' => user_id, 'site_id' => site_id), tmp_access_array)を返す
※ 配列など、さまざまなパラメータを使用して、プラグインフックをトリガーします。
※ array('user_id' => user_id, 'site_id' => site_id)について
C#で実装する場合はDictionaryクラスを使用する