車輪の再発明記録 -2ページ目

車輪の再発明記録

無駄なことを再発明するブログです。

get_annotation_sql(annotation_name, entity_guid, owner_guid, exists)メソッド

説明
注釈の制限を追加
特定のユーザーが持っている場合(またはオプションで偽)が真であるSQLのフラグメントを返します。
共通変数
CONFIG

1 existsがtrueであった場合
1.1 not変数に空文字を代入
2 existsがfalseであった場合
2.1 not変数に”NOT”を代入
3 not + " EXISTS (SELECT * FROM " + CONFIG->dbprefix + "annotations a " +
"INNER JOIN " + CONFIG->dbprefix + "metastrings ms ON (a.name_id = ms.id) "
"WHERE ms.string = '" + annotation_name + "' " +
"AND a.entity_guid = " + entity_guid + " " +
"AND a.owner_guid = " + owner_guid + ")"
上記SQL文をsql変数に代入する
4 sqlを返す
説明
新しいコンテンツのデフォルトのアクセス許可を取得します。
共通変数
CONFIG

1 CONFIG->allow_user_default_accessに値がなかった場合(未確認)
1.1 CONFIG->default_accessを返す
2 userがnull または、get_loggedin_user()がnullであった場合
※userがnullであった場合get_loggedin_user()の戻り値をuserへ代入する(未確認)
2.1 CONFIG->default_accessを返す
3 user->getPrivateSetting('elgg_default_access') の戻り値がfalseまたはnullでなかった場合
3.1 user->getPrivateSetting('elgg_default_access')を返す
4 user->getPrivateSetting('elgg_default_access') の戻り値がfalseまたはnullであった場合
4.1 CONFIG->default_accessを返す
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クラスを使用する