OSDN Git Service

add ACS webapp, sql, htdocs
[acs/acs.git] / webapp / lib / class / ACSUserFolder.class.php
diff --git a/webapp/lib/class/ACSUserFolder.class.php b/webapp/lib/class/ACSUserFolder.class.php
new file mode 100644 (file)
index 0000000..f9ca69c
--- /dev/null
@@ -0,0 +1,285 @@
+<?php
+/**
+ * ACS User Folder
+ *
+ * @author  kuwayama
+ * @version $Revision: 1.13 $ $Date: 2008/04/24 16:00:00 y-yuki Exp $
+ */
+require_once(ACS_CLASS_DIR . 'ACSGenericFolder.class.php');
+
+define('_ACSUSERFOLDER_COMMUNITY_TYPE_MASTER', 
+               ACSMsg::get_mst('community_type_master','D10'));
+
+class ACSUserFolder extends ACSGenericFolder
+{
+       /* ¥³¥ß¥å¥Ë¥Æ¥£¥¿¥¤¥×̾ */
+       var $community_type_name = _ACSUSERFOLDER_COMMUNITY_TYPE_MASTER;
+
+       /**
+        * ¥³¥ó¥¹¥È¥é¥¯¥¿
+        *
+        * @param $user_community_id
+        * @param $acs_user_info_row ¥¢¥¯¥»¥¹¼Ô¾ðÊó
+        * @param $folder_id
+        */
+       function ACSUserFolder ($user_community_id, $acs_user_info_row, $folder_id) {
+               /* ¥Õ¥©¥ë¥ÀID¤Î»ØÄ꤬¤Ê¤¤¾ì¹ç¡¢¥ë¡¼¥È¥Õ¥©¥ë¥À¤ò¼èÆÀ¤¹¤ë */
+               if ($folder_id == "") {
+                       $folder_row = $this->get_root_folder_row($user_community_id);
+
+                       $folder_id = $folder_row['folder_id'];
+               }
+
+               // ¥æ¡¼¥¶¥Õ¥©¥ë¥À¤Ç¤Ï¡¢¼èÆÀÂоݤΥե©¥ë¥À¾ðÊó¤Èɽ¼¨¤¹¤ë¥Õ¥©¥ë¥À¤ÏƱ°ì
+               parent::ACSGenericFolder($user_community_id, $acs_user_info_row, $folder_id, array($folder_id));
+       }
+
+       /**
+        * ¥Õ¥©¥ë¥À¸¡º÷
+        *
+        * @param $user_community_id
+        * @param $form ¸¡º÷¾ò·ï
+        * @return ¥Õ¥©¥ë¥À¾ðÊó¤ÎÇÛÎó
+        */
+       function search_folder_row_array($user_community_id, $form) {
+               $user_community_id = pg_escape_string($user_community_id);
+
+               $sql  = "SELECT *";
+               $sql .= " FROM folder";
+               $sql .= " WHERE folder.community_id = '$user_community_id'";
+               $sql .= "  AND folder.parent_folder_id is not null";
+
+               if ($form['q'] != '') {
+                       $query_array_array = ACSLib::get_query_array_array($form['q']);
+                       $where_sql = '';
+                       foreach ($query_array_array as $query_array) {
+                               if (!count($query_array)) {
+                                       continue;
+                               }
+
+                               $sub_where_sql = '';
+                               foreach ($query_array as $query) {
+                                       $query = pg_escape_string($query);
+                                       ACSLib::escape_ilike($query);
+
+                                       if ($sub_where_sql != '') {
+                                               $sub_where_sql .= " OR ";
+                                       }
+
+                                       $sub_where_sql .= "(";
+                                       $sub_where_sql .= " folder.folder_name ILIKE '%$query%'";
+                                       $sub_where_sql .= " OR folder.comment ILIKE '%$query%'";
+                                       $sub_where_sql .= ")";
+                               }
+
+                               if ($sub_where_sql != '') {
+                                       if ($where_sql != '') {
+                                               $where_sql .= " AND ";
+                                       }
+                                       $where_sql .= "($sub_where_sql)";
+                               }
+                       }
+
+                       if ($where_sql != '') {
+                               $sql .= " AND ($where_sql)";
+                       }
+               }
+               //
+
+               // ORDER
+               if ($form['order'] == 'update_date') {
+                       $sql .= " ORDER BY folder.update_date DESC";
+               } else {
+                       $sql .= " ORDER BY folder.folder_name ASC";
+               }
+
+               $row_array = ACSDB::_get_row_array($sql);
+               return $row_array;
+       }
+
+       /**
+        * ¥Õ¥¡¥¤¥ë¸¡º÷
+        *
+        * @param $user_community_id
+        * @param $form ¸¡º÷¾ò·ï
+        * @return ¥Õ¥©¥ë¥À¾ðÊó¤ÎÇÛÎó
+        */
+       function search_file_info_row_array($user_community_id, $form) {
+               $user_community_id = pg_escape_string($user_community_id);
+
+               $sql  = "SELECT *";
+               $sql .= " FROM folder, folder_file, file_info";
+               $sql .= " WHERE folder.community_id = '$user_community_id'";
+               $sql .= "  AND folder.folder_id = folder_file.folder_id";
+               $sql .= "  AND folder_file.file_id = file_info.file_id";
+               $sql .= "  AND file_info.owner_community_id  = '$user_community_id'";
+
+               if ($form['q'] != '') {
+                       $query_array_array = ACSLib::get_query_array_array($form['q']);
+                       $where_sql = '';
+                       foreach ($query_array_array as $query_array) {
+                               if (!count($query_array)) {
+                                       continue;
+                               }
+
+                               $sub_where_sql = '';
+                               foreach ($query_array as $query) {
+                                       $query = pg_escape_string($query);
+                                       ACSLib::escape_ilike($query);
+
+                                       if ($sub_where_sql != '') {
+                                               $sub_where_sql .= " OR ";
+                                       }
+
+                                       $sub_where_sql .= "(";
+                                       $sub_where_sql .= " file_info.display_file_name ILIKE '%$query%'";
+                                       $sub_where_sql .= " OR file_info.comment ILIKE '%$query%'";
+                                       $sub_where_sql .= ")";
+                               }
+
+                               if ($sub_where_sql != '') {
+                                       if ($where_sql != '') {
+                                               $where_sql .= " AND ";
+                                       }
+                                       $where_sql .= "($sub_where_sql)";
+                               }
+                       }
+
+                       if ($where_sql != '') {
+                               $sql .= " AND ($where_sql)";
+                       }
+               }
+               //
+
+               // ORDER 
+               if ($form['order'] == 'update_date') { 
+                       $sql .= " ORDER BY file_info.update_date DESC";
+               } else {
+                       $sql .= " ORDER BY file_info.display_file_name ASC";
+               }
+
+               $row_array = ACSDB::_get_row_array($sql);
+               return $row_array;
+       }
+
+       /**
+        * ¥Õ¥©¥ë¥ÀÁ´ÂΤθø³«ÈÏ°Ï¥»¥Ã¥È
+        * ¥æ¡¼¥¶¤Î¥Õ¥©¥ë¥À¤Î¾ì¹ç¤Ï¡¢°ìÈ̸ø³«
+        *
+        * @param $community_id
+        */
+       function set_contents_folder_open_level ($community_id) {
+               $open_level_code = "";
+               $open_level_name = "";
+
+               // ¥Õ¥©¥ë¥ÀÁ´ÂΤθø³«ÈÏ°Ï °ìÈ̸ø³«¤ò¼èÆÀ
+               $open_level_master_row_array = ACSAccessControl::get_open_level_master_row_array(ACSMsg::get_mst('community_type_master','D10'), ACSMsg::get_mst('contents_type_master','D32'));
+               foreach ($open_level_master_row_array as $open_level_master_row) {
+                       if ($open_level_master_row['open_level_name'] == ACSMsg::get_mst('open_level_master','D01')) {
+                               $open_level_code = $open_level_master_row['open_level_code'];
+                               $open_level_name = $open_level_master_row['open_level_name'];
+
+                               break;
+                       }
+               }
+
+               $this->open_level_code = $open_level_code;
+               $this->open_level_name = $open_level_name;
+
+               // ±ÜÍ÷µö²Ä¥³¥ß¥å¥Ë¥Æ¥£¥»¥Ã¥È
+               // ÀßÄê¤Ê¤·
+               $this->set_contents_folder_trusted_community_row_array(array());
+       }
+
+       /**
+        * ¥Õ¥©¥ë¥À¤Ë¥¢¥¯¥»¥¹¸¢¤¬¤¢¤ë¤«
+        *
+        * @param  $target_user_info_row É½¼¨Âоݥޥ¤¥Ú¡¼¥¸¾ðÊó
+        * @return true / false
+        */
+       function has_privilege ($target_user_info_row) {
+               $ret_folder_obj_array = array();
+
+               /* role_array ¼èÆÀ */
+               $role_array = ACSAccessControl::get_user_community_role_array($this->get_acs_user_info_row(), $target_user_info_row);
+
+               $folder_obj = $this->get_folder_obj();
+               $ret_folder_obj = ACSAccessControl::get_valid_obj_row_array_for_user_community($this->get_acs_user_info_row(), $role_array, array($folder_obj));
+
+               if ($ret_folder_obj) {
+                       return true;
+
+               // ¤Ê¤¤¾ì¹ç¤Ï¡¢¥¢¥¯¥»¥¹ÉÔ²Ä
+               } else {
+                       return false;
+               }
+       }
+
+       /**
+        * ¥Þ¥¤¥Õ¥ì¥ó¥º¤Î¿·Ãå¥Õ¥¡¥¤¥ë¾ðÊó¤ò¼èÆÀ¤¹¤ë
+        *
+        * @param $user_community_id ¥æ¡¼¥¶¥³¥ß¥å¥Ë¥Æ¥£ID (¥À¥¤¥¢¥ê¡¼¤Ø¤Î¥¢¥¯¥»¥¹¼Ô¤È¤Ê¤ë¥æ¡¼¥¶)
+        *        $days ¼èÆÀ¤¹¤ëÆü¿ô(ºÇ¶á²¿Æü´Ö¤Î¿·Ãå¾ðÊó¤ò¼èÆÀ)
+        * @return ¿·Ãå¥Õ¥©¥ë¥À°ìÍ÷ (Ï¢ÁÛÇÛÎó¤ÎÇÛÎó)
+        */
+       function get_new_friends_file_row_array($user_community_id, $days=false, $offset=false) {
+               // ¥Þ¥¤¥Õ¥ì¥ó¥º¤Î¥æ¡¼¥¶¥³¥ß¥å¥Ë¥Æ¥£ID¤ÎCSV¤òºîÀ®¤¹¤ë
+               // ¥Þ¥¤¥Õ¥ì¥ó¥º¤Î¾ò·ïcsvʸ»úÎó¼èÆÀ
+               $csv_string = ACSUserFolder::get_new_friends_csv_string($user_community_id);
+
+               $row_array = array();
+
+               if ($csv_string!='') {
+                       // ¥Þ¥¤¥Õ¥ì¥ó¥º¥Õ¥©¥ë¥À¤Î¿·Ãå¾ðÊó¤ò¼èÆÀ
+                       $row_array = ACSUserFolder::get_new_folder_row_array(
+                                                               $user_community_id, $csv_string, $days, $offset);
+               }
+
+               return $row_array;
+
+       }
+
+       /**
+        * ¥Þ¥¤¥Õ¥ì¥ó¥º¤Îcsvʸ»úÎó¤ò¼èÆÀ¤¹¤ë
+        *
+        * @param $user_community_id ¥æ¡¼¥¶¥³¥ß¥å¥Ë¥Æ¥£ID (¥¢¥¯¥»¥¹¼Ô¤È¤Ê¤ë¥æ¡¼¥¶)
+        * @return csvʸ»úÎó
+        */
+       function get_new_friends_csv_string($user_community_id) {
+
+               // ¥Þ¥¤¥Õ¥ì¥ó¥º¤Î¥æ¡¼¥¶¥³¥ß¥å¥Ë¥Æ¥£ID¤ÎCSV¤òºîÀ®¤¹¤ë
+               // ¥Þ¥¤¥Õ¥ì¥ó¥º¤Î¼èÆÀ
+               $friends_row_array = ACSUser::get_simple_friends_row_array($user_community_id);
+
+               // ¥Þ¥¤¥Õ¥ì¥ó¥º¤Î¾ò·ïcsvʸ»úÎó¼èÆÀ
+               $csv_string = 
+                       ACSLib::get_csv_string_from_array($friends_row_array, 'user_community_id');
+
+               return $csv_string;
+       }
+
+       /**
+        * ¥Þ¥¤¥Õ¥ì¥ó¥º¤Î¿·Ãå¥Õ¥©¥ë¥À¾ðÊó¤ò¼èÆÀ¤¹¤ë
+        *
+        * @param $user_community_id ¥æ¡¼¥¶¥³¥ß¥å¥Ë¥Æ¥£ID (¥À¥¤¥¢¥ê¡¼¤Ø¤Î¥¢¥¯¥»¥¹¼Ô¤È¤Ê¤ë¥æ¡¼¥¶)
+        * @return ¿·Ãå¥Õ¥©¥ë¥À°ìÍ÷ (Ï¢ÁÛÇÛÎó¤ÎÇÛÎó)
+        */
+       function get_new_friends_folder_row_array($user_community_id) {
+
+               // ¥Þ¥¤¥Õ¥ì¥ó¥º¤Î¥æ¡¼¥¶¥³¥ß¥å¥Ë¥Æ¥£ID¤ÎCSV¤òºîÀ®¤¹¤ë
+               // ¥Þ¥¤¥Õ¥ì¥ó¥º¤Î¼èÆÀ
+               $friends_row_array = ACSUser::get_simple_friends_row_array($user_community_id);
+
+               // ¥Þ¥¤¥Õ¥ì¥ó¥º¤Î¾ò·ïcsvʸ»úÎó¼èÆÀ
+               $csv_string = 
+                       ACSLib::get_csv_string_from_array($friends_row_array, 'user_community_id');
+
+               // ¥Þ¥¤¥Õ¥ì¥ó¥º¥Õ¥©¥ë¥À¤Î¿·Ãå¾ðÊó¤ò¼èÆÀ
+               $row_array = ACSUserFolder::get_new_folder_row_array(
+                                                       $user_community_id, $csv_string);
+
+               return $row_array;
+
+       }
+}
+?>