플러그인에서 자체 고유의 데이터 저장을 위한 API

환경 설정 값들이나 저장을 위해 지원되는 컴포넌트들이 플러그인의 데이터를 저장하기에 충분하지 않은 경우, 텍스트큐브는 플러그인이 사용할 수 있는 전용의 테이블을 단수 또는 복수개를 만들 수 있도록 API를 지원합니다.

테이블 만들기

플러그인이 사용하는 테이블을 만들기 위해서는 storage 섹션을 추가해야 합니다. 텍스트큐브의 플러그인 중 하나인 '팀블로그 설정' 플러그인을 예로 들어 보겠습니다.

              ...
             <title xml:lang="ko">팀블로그 설정</title>
             <handler>getTeamBlogSettings</handler>
           </method>
         </viewMethods>
       </adminMenu>
     </binding>
     <storage>
       <table>
         <name>TeamUserSettings</name>
         <fields>
             <field>
               <name>userid</name>
               <attribute>int</attribute>
               <length>11</length>
               <isnull>0</isnull>
               <default>1</default>
             </field>
             <field>
               <name>style</name>
               <attribute>varchar</attribute>
               <length>255</length>
               <isnull>1</isnull>
               <default></default>
             </field>
             <field>
               <name>image</name>
               <attribute>varchar</attribute>
               <length>32</length>
               <isnull>1</isnull>
               <default></default>
             </field>
             <field>
               <name>profile</name>
               <attribute>text</attribute>
               <isnull>1</isnull>
               <default></default>
             </field>
             <field>
               <name>updated</name>
               <attribute>int</attribute>
               <length>11</length>
               <isnull>0</isnull>
               <default>0</default>
             </field>
         </fields>
         <key>userid</key>
       </table>
     </storage>
   </plugin>

storage 섹션은 어떤 종류의 테이블을 플러그인이 사용하는지 알려주는 역할을 합니다. 가장 위부터 차례대로 보겠습니다.

  • <name>TeamUserSettings</name> : 플러그인이 사용하는 테이블의 이름입니다. 이 이름에 텍스트큐브의 기본 prefix (설치시 기본 값은 tc_ 입니다) 가 붙은 테이블이 최종적으로 생성됩니다.
  • <fields> : 필드들을 정의합니다. 주의하셔야 할 점은, 필드를 정의할 때 따로 정의하지 않더라도 블로그들을 구분하기 위한 필드인 blogid 라는 필드가 자동으로 생성됩니다. 따라서 블로그를 구분하기 위하여 별도의 필드를 만드시지 않아도 됩니다.
    • <field> : 필드 하나의 시작입니다.
      • <name>updated</name> : 테이블의 필드의 이름입니다. 영소문자가 가능합니다. 대문자를 사용할 경우, 일부 DBMS에서 오류 메세지가 나올 수 있습니다.
      • <attribute>int</attribute> : 필드의 속성입니다. 여기서는 integer를 지정했습니다. 이 이외에도 일반적인 DBMS들이 지원하는 속성을 사용할 수 있습니다. tinyint, varchar, text 이외에도 다양한 속성들이 있습니다. 자세한 부분은 사용하거나 지원할 DBMS의 매뉴얼을 참고하세요.
      • <length>11</length> : 필드의 길이입니다.
      • <isnull>0</isnull> : 필드에 null값을 허용할 것인지의 여부를 결정합니다.
      • <default>0</default> : 기본 값을 지정합니다.
    • </field>

위와 같이 xml에 사용할 테이블의 속성을 명기하면, 이후 플러그인이 테이블을 필요로 할 경우 해당되는 테이블이 자동으로 생성됩니다. 생성된 테이블은 관리자 메뉴의 '플러그인'-'플러그인 테이블 관리' 에서 사용 내역을 보거나 삭제할 수 있습니다.