PowerCMS::Util - Powrer CMS for MT utility functions
use lib qw( plugins/PowerCMS/lib ); use PowerCMS::Util qw( function1 function2 );
PowerCMS::Util のバージョンを返します。
コンテクストをセットしてテンプレートのビルド( 再構築 )結果を返します。
MT::Templateオブジェクト又は文字列のいずれかを指定します。
MTオブジェクトの各オブジェクト ( MT::Blog,MT::Category, MT::Entry, MT::Author ) および タイムスタンプ ( start,end ) を指定します。例:
%args = ( blog => $blog, # optional entry => $entry, # optional category => $category, # optional author => $author, # optional start => 'YYYYMMDDhhmmss', # optional end => 'YYYYMMDDhhmmss', # optional );
指定した値は<mt:var name='key'>で取り出すことができます。例:
my %params = ( foo => 'bar', # => <mt:var name='foo'> bar => 'buz', # => <mt:var name='bar'> );
アイテム ( MT:Assetオブジェクト ) を作成して保存します。
%params = ( file => $file, # required author => $author, # required ( MT::Authorオブジェクト ) label => $label, # optional description => $description, # optional parent => $parent_asset->id, # optional object => $obj, # optional ( 指定したオブジェクトとアイテムを関連付けます ) tags => \@tags, # optional ( 指定するタグの配列 ( 文字列 ) ) );
アイテムの直前に cms_pre_save.asset, 保存直後に cms_post_save.asset 及び cms_upload_file( cms_upload_image )コールバックをコールします。
ブラウザからアップロードされたファイルを保存してアイテムに登録します。 戻り値はアイテム( MT::Assetオブジェクト )の配列です。 $params{ no_asset } = 1を指定した場合はファイルパスの配列を返します。 $params{ singler } = 1を指定した場合配列ではなくスカラー型で値を返します。
input要素のname属性を指定します。(<input type='file' name='[name]' />)
ファイルの保存場所をフルパスで指定します。
%params = ( object => $obj, # optional ( 指定したオブジェクトと保存したアイテムを関連付けます ) author => $author, # optional ( MT::Authorオブジェクト/省略時は現在のユーザー ) rename => 1, # optional ( ファイルが存在する場合上書きせずに別名を付けます ) label => 'foo', # optional ( アイテムの名前 ) description => 'bar', # optional ( アイテムの説明 ) format_LF => 1, # optional ( 改行コードをLFに揃えます ) singler => 1, # optional ( アップロードされるファイルが1点の場合に指定 ) no_asset => 1, # optional ( アイテムを保存せずにファイルのみを保存します ) );
$imageで指定したGIF形式のファイルをPNG形式のファイルに、PNG形式のファイルをGIF形式のファイルに変換します。
指定したブログに対してユーザーにロールを割り当てます。戻り値はMT::Associationオブジェクトです。
MT::Entryオブジェクトを作成して保存します。 $params{ no_save } = 1を指定した場合MT::Entryオブジェクトのみを返します( 保存は行いません )。 この場合、カテゴリーや関連オブジェクトはセットされないことに注意してください。 $params{ rebuildme } = 1を指定した場合保存後に再構築を実行します。
MT::Entryオブジェクトの各カラムの値及びカスタムフィールド、カテゴリ、タグを指定します。例:
%args = ( title => 'foo', # optional ( その他のカラム 例:text_more,excerptも同様に指定できます ) text => 'bar', # optional ( 一部のカラムでは指定がない場合ブログのデフォルト値が利用されます ) author_id => 1, # optional ( 指定がない場合現在のユーザー ) status => MT::Entry::RELEASE(), # optional ( 指定がない場合ブログのデフォルト ) customfield_basename => 'buz', # optional ( customfield_+フィールドのbasename ) tags => \@tags, # optional ( 指定するタグの配列 ( 文字列 ) ) category_id => 1, # optional ( カテゴリが一つの場合( カテゴリのID ) ) categories => \@categories, # optional ( カテゴリが複数の場合( MT::Categoryオブジェクトの配列 ) ) ); id( エントリーのID )を指定した場合、エントリーが存在すれば上書きします。 複数のカテゴリを指定した場合最初のカテゴリがプライマリカテゴリに指定されます。
保存と再構築に関する指定を行います。
%params = ( rebuildme => 1, # optional 保存後に再構築を行います dependencies => 1, # optional 再構築時にインデックス等の関連アーカイブを再構築します no_save => 1, # optional エントリーを保存せずにオブジェクトのみ返します(再構築は行われません) background => 1, # optional バックグラウンドプロセスで再構築を実行します );
エントリーの保存前に cms_pre_save.entry( page ) エントリーの保存後に cms_pre_save.entry( page ) コールバックをコールします。
create_entryへのエイリアスです。
フルパス ( フルパス ) とデータを指定してファイルを生成します。
'upload' 又は 'output' ( 省略の場合'output' );
$blogを指定した場合相対パス ( %r や %s を含むパス ) の使用が可能です。
ファイルの内容を返します。
'upload' 又は 'ascii' ( 省略の場合'ascii' );
$blogを指定した場合相対パス ( %r や %s を含むパス ) の使用が可能です。
$from から $to へファイルを移動します。 $blogを指定した場合相対パス ( %r や %s を含むパス ) の使用が可能です。
$from から $to へファイル ( 又はフォルダ ) をコピーします。 $blogを指定した場合相対パス ( %r や %s を含むパス ) の使用が可能です。
$remove ( フルパス ) のファイル ( フォルダ ) を削除します。 $blogを指定した場合相対パス ( %r や %s を含むパス ) の使用が可能です。
相対パス ( %r や %s を含むパス ) をフルパスに変換します。
フルパスを相対パス ( %r や %s を含むパス ) に変換します。
フルパスからURLを生成します。
相対パス ( %r や %s を含むパス ) をURLに変換します。
URLからサーバーのフルパスを生成します。
ブログのサイト・パスを常に末尾の / ( スラッシュ ) を省略して返します。 アーカイブ・パスの指定がある場合はアーカイブ・パスを返します。
ブログのアーカイブ・パスを常に末尾の / ( スラッシュ ) を省略して返します。
ブログのURLを常に末尾の / ( スラッシュ ) を省略して返します。 末尾の / を含む完全なURLを返す場合は add_slash 関数をあわせて利用してください。
%s が示すディレクトリ ( MT4ではスタティックパス、MT5ではサポートディレクトリのパス ) を返します。
サポートディレクトリのパスを返します。
現在のタイムスタンプを YYYYMMDDhhmmss 形式で返します。
$ts ( YYYYMMDDhhmmss ) の24時間後のタイムスタンプを返します。
$ts ( YYYYMMDDhhmmss ) の24時間前のタイムスタンプを返します。
$ts ( YYYYMMDDhhmmss ) の書式が妥当で且つ存在している日時の場合 1 を返します。
$num が電話番号の書式として妥当な場合 1 を返します。
$code が郵便番号の書式として妥当な場合 1 を返します。
月を表す文字列( 例: January, Jan, jan ) から数字を返します。
添付ファイル付きメールを送信します。
添付ファイルの配列を含むパラメタを渡します。
%args = ( from => $from, # required to => $to, # optional subject => $subject, # optional cc => $cc, # optional bcc => $bcc, # optional attaches => \@attaches, # optional cb_params => \$cb_params # optional );
$cb_paramsには send_mail 関数に渡すコールバック用のパラメタを指定します。 パラメタの指定方法については send_mail 関数のドキュメントを参照。
添付ファイルについては下記のように指定します。
my @attaches = ( { Path => '/path/to/file1.csv' }, { Path => '/path/to/file1.jpg', Type => 'image/jpeg', Encoding => 'base64', }, );
添付ファイル付きメール送信時に、send_mailに渡すためのContent-Typeと マルチパートなBodyを返します。 戻り値は、上記のリストです。( $content_type, $new_body )
MIME::Bodyのbuild関数の引数に準じたパラメータを指定します。
%args = ( Body => \@body_lines, # required Attaches => \@attache_file_info, # optional );
@body_lines = ( $body ); # send_mailの$bodyをそのまま使う場合
@attache_file_info = ( { Path => '添付ファイルのパス', # 必須パラメータ、存在しなければ無視される Type => 'MIMEタイプ', # MIME::Entity的に必須、デフォルトmime_type()で生成 Encoding => 'エンコード方式' # なければMIME::Entityに推測させる }, );
指定の $to へメールを送信します。 $from, $to, $subject, $body のいずれかが空の場合はメール送信せずにリターンします。 また、実際の送信前にpre_send_mailコールバックを\%args 形式で呼び出します。 コールバックが0を返した場合は、メール送信せずにリターンします。 第2の呼び出しインターフェースでは、Content-Typeを指定可能です。
呼び出し側でコールバックされたときに渡すものを自由に指定します。 以下のようにkeyを入れてください。keyがない場合は、'default'が自動的に入ります。例: %params_for_callbacks = ( key => '呼び出しを特定する文字列', another params ... );
第2の呼び出しインターフェース引数
%args = ( from => $from, # required to => $to, # required subject => $subject, # required body => $body, # required cc => \@cc, # optional bcc => \@bcc, # optional content_type => $content_type, # optional );
%args の中の特定のキーの値を変更することで、後続の実際のメール送信対象を変更可能です。 コールバックが偽を返すとメール送信が行われません。
メールを受信します。戻り値はメールと添付ファイルに関する情報の配列です。例:
( { from => $from, subject => $subject1, body => $body1, files => \@files1, directory => $workdir1 }, { from => $from2, subject => $subject2, body => $body2, files => \@files2, directory => $workdir2 } )
delete に 1 値を渡すとメール受信後にメールをサーバーから削除します。
ディレクトリまたはファイルの配列を指定してZIPアーカイブファイルを作成します。 戻り値は Archive::Zip モジュールの writeToFileNamed 関数の実行結果です。
ディレクトリ内の特定のファイル(複数可)を対象にアーカイブを作成する場合、$files にファイルパスの 配列を渡します。
ログイン中のユーザーの MT::Author オブジェクトを返します。
ログイン中のユーザーの MT::Author オブジェクトを返します。 MTのユーザー、コメント投稿者、携帯のセッションID、携帯の個別機種IDの順にユーザーをチェックして、 どれかに該当すればそのユーザーの MT::Author オブジェクトを返します。
実行中のアプリケーションの MT::Blog オブジェクトを返します。
URLを指定してデータをGETしてコンテンツの内容を返します。
LWP::UserAgent モジュールに渡すURLを指定します。
返り値にUTF8フラグを付けて返します。
GETしたデータをファイルに保存する場合に、保存するファイルのパスを指定します。
MT::Feeds::Lite を利用してフィードを取得します。 戻り値は取得したフィード情報のハッシュ・リファレンスです。例: ( LITE => $lite, # MT::Feeds::Lite->fetch( $uri )の返り値 TITLE => $title, LINK => $link, ENTRIES => \%$entries, COUNT => $count, );
MT::Feeds::Lite モジュールに渡すURLを指定します。
取得したテキストにUTF8フラグを付けて返します。
開始ポイント、終了ポイントを指定してその間のコンテンツを抽出します。
値を指定した場合、抽出開始ポイント、終了ポイントの文字列を含む抽出結果を返します。
正規表現パターンを指定してデータを抽出します。
文字列を置換します。
MTのグローバルモディファイア regex_replace の実行結果を返します。
Text::CSV_XS または Text::CSVオブジェクトを生成して返します。
Net::FTP オブジェクトを生成してFTPサーバーに接続します。
FTPサーバーからファイルを取得します。
Net::FTP オブジェクト
ダウンロードするファイルが格納されているディレクトリ
取得するリモートファイル名
取得したファイルの保存場所
転送モード ( 省略した場合 'binary' )
Net::FTP モジュールを利用してリモートサーバーへファイルをアップロードします。
Net::FTP オブジェクト
アップロードするリモートサーバーのディレクトリ
アップロードするファイルのパス
転送モード ( 省略した場合 'binary' )
コールバックに引き渡すパラメタを指定します
アップロードの直前に呼び出されます。コールバックが偽を返すとアップロードを中止します。
アップロードの直後に呼び出されます。
指定したリモートディレクトリ $cwd に ディレクトリ $dir を生成します。
FTP接続を終了します。
URLに不適切な文字列を含むパス名( 日本語を含むパス名など ) をランダムな文字列のパスに変換します。
set_upload_filename を実行した後、同名のファイルが存在すれば連番を付けてユニークなファイルパス を生成します。
ディレクトリ以下 ( サブディレクトリを含む ) のファイルの配列を返します。
正規表現パターンを渡すとマッチしたファイルのみを抽出します。
実行中のアプリケーションのユーザーの MT::Permission オブジェクトをロードして返します。
配列から重複した値を削除してユニークな値の配列を返します。
値を切り上げます。
値を切り捨てます。
値を四捨五入します。
文字列の改行コードを LF に統一します。
実行中のアプリケーションへアクセスしている端末のUser-Agent情報を判別する文字列を返します。 $wants に Smartphone Keitai Mobile いずれかの値を渡した場合、該当する場合に 1 を返します。
実行中のアプリケーションへアクセスしている端末が DoCoMo AU Softbankのいずれかの携帯電話の場合に 1 を返します。
実行中のアプリケーションへアクセスしている端末が DoCoMo AU Softbankのいずれか、 もしくは スマートフォン端末の場合に 1 を返します。
実行中のアプリケーションへアクセスしている端末が iPhone iPod touchのいずれかの場合に 1 を返します。
実行中のアプリケーションへアクセスしている端末が iPad の場合に 1 を返します。
実行中のアプリケーションへアクセスしている端末が Android の場合に 1 を返します。
ブログに対してユーザーが特定の権限を持っている場合に 1 を返します。
権限をチェックする対象のブログ
権限をチェックする対象のユーザー
チェックするパーミッション( 例 : ブログ記事投稿権限の場合 'create_post' )
実行中のアプリケーションの mode ( __mode ) がブログ記事 / ウェブページの一括編集の場合に 1 を返します。
実行中のアプリケーションが MT::App::Foo の場合に 1 を返します。
実行中のアプリケーションが MT::App::CMS の場合に 1 を返します。
実行中のOS環境が Windows 環境である場合に 1 を返します。
$app->blog が有効な MT::Blog( MT::Website )オブジェクトである場合に 1 を返します。
プラグイン $component ( プラグイン名 )がインストールされていて有効な場合に 1 を返します。 例:
if (! if_plugin( 'PowerCMS' ) ) { return 'PowerCMSがインストールされていません。'; }
指定したパスがアプリケーションから書き込み可能なパスであるかどうかを調べます。 TempDir ImportPath SupportDirectoryPath PowerCMSFilesDirのいずれか以下のパスである場合に 1 を返します。
第二引数 $blog を指定している場合、指定したパスがブログの公開パス以下のパスである場合は 1 を返します。
ファイルの拡張子を返します。第二引数を省略した場合、値は小文字に変換されて返されます。
ファイルパスからファイル名を抽出し、拡張子を除いたファイルを返します。例:
file_label( '/path/to/file.jpg' ); # 'file'
ファイルパスからファイル名を抽出します。
ファイルパスからファイルの MIME タイプを返します。例:
mime_type( '/path/to/file.html' ); # 'text/html'
メールアドレスが妥当な書式の場合に 1 を返します。
携帯電話の個別機種ID情報が送信されている時にその値を取得します。 第二引数を渡すと機種ID情報のSHA1ダイジェストを返します。
指定したIPアドレスが第二引数としてIPアドレスのテーブル(配列)に含まれる場合、 もしくはテーブルに192.168.11.0/24等の指定があった場合はIPアドレスの範囲に含まれているかを 調べて妥当な場合に 1 を返します。
Unicode::Japaneseモジュールを利用して文字列を UTF8 コードで取り出します。 Perl-5.8.0 以降においては, utf-8 フラグのついた utf-8 文字列として返します。
文字列にUTFフラグを付けて返します。
文字列のUTFフラグを落とします。
MT::I18N::encode_text を呼び出して文字列をUTF8に変換します。
Unicode::Normalize モジュールを利用して文字列を正規化( NFKC )します。
アイテムを保存した直後に呼ばれる cms_upload_file, cms_upload_image コールバックを呼び出します。
アップロードされたファイルの MT::Asset オブジェクトです。
ファイルが画像の場合、Image::Size::imgsizeで取得したファイルの種類( 3つめの戻り値 )
指定したファイルが MT::Asset::Image に登録されている画像フォーマットの場合に 1 を返します。
ディレクトリのパスから末尾のセパレータ ( '/' または '\\' ) を削除します。
ディレクトリのパスの末尾にセパレータ ( '/' または '\\' ) を追加します。 URLを渡した場合は末尾に '/' を追加します。第二引数を省略した場合、OSは自動判別されます。
PowerCMSがファイル( キャッシュ、バックアップ、一時ファイル、設定等 )を保存するディレクトリの パスを取得します。 通常は /path/to/mt_dir/powercms_files です( 環境設定 PowerCMSFilesDir で設定を変更できます )。 ディレクトリが存在しない場合は自動的に生成されます。
PowerCMSがファイル( キャッシュ、バックアップ、一時ファイル、設定等 )を保存するディレクトリの パスを取得します(パスの取得のみで生成は行いません)。
ディレクトリを作成します。
テンプレートモジュールを登録します。
register_template( 'foo', 'path/to/tmpl' ); register_template( 'foo', { text => 'path/to/tmpl', subject => 'anotherpath' } ); register_template( 'foo', 'path/to/tmpl', { blog_id => '3' } ); register_template( 'foo', 'path/to/tmpl', { component => MT->component( 'Foo' ) } ); register_template( 'foo', 'path/to/tmpl', { type => 'email' } ); register_template( 'foo', 'path/to/tmpl', { name => 'Template Name' } );
登録キー名,ファイルパス,その他 MT::Template の作成に必要なパラメータを渡します。 未登録ならオブジェクトを作成します。
テンプレートを特定するキー
登録するテンプレートファイルパス
テンプレートオブジェクトのtextカラムに入る内容の元になるファイルのパスを指定します。 パスは $params->{ component }->path の tmpl 下の相対パスか絶対パスで指定可能です。 textカラム以外の場所にも登録したい場合は、
{ text => 'textカラム用のファイルパス', subject => 'subjectカラム用のファイルパス' }
という形で、ハッシュリファレンスを渡すことにより、別のファイルを指定することが可能です。 ハッシュリファレンスを渡す場合はtextキーは必須になります。
デフォルト以外の動作を指定する場合のパラメータ 下記以外のパラメータを指定した場合は、テンプレートの該当カラムに入れるものとして動作します。
テンプレートを検索・登録するブログのID
テンプレートパス決定に使用するプラグイン
登録するタイプ
テンプレート登録名
特定のブログにテンプレートを一式登録する。例:
my %info = { foo => { path => 'path/to/tmpl' }, bar => { path => 'path/to/tmpl', blog_id => 0 }, buz => { path => 'path/to/tmpl', type => 'email' }, };
register_templates_to( $blog_id, MT->component( 'Foo' ), \%info );
register_templateのデフォルトのblog_idとして利用します。
register_templateのデフォルトのcomponentとして利用します。
各テンプレートの登録情報の入ったハッシュリファレンスです。
register_templateの第2引数に使用します。
register_templateの第3引数に使用します。
ただし、blog_id,component がなければ指定のデフォルトが使用されます。
register_template互換の引数を受け取ります。 登録されたテンプレートオブジェクトがあればそれを、なければファイルパスを返します。 リストコンテキストでは、キーでソートされたリストを返します。 複数値の設定に対してスカラコンテキストでの取得はtextのものを返します。例:
my $tmpl = load_registered_template( 'foo', 'path/to/tmpl' ); my ( $subject, $body_text ) = load_registered_template( 'foo', { text => 'path/to/tmpl', subject => 'Anotherpath' } ); my $body_text = load_registered_template( 'foo', { text => 'path/to/tmpl', subject => 'Subject of Tenplate' } );
register_template_to に近い引数を受け取ります。 blog_id と componentにデフォルトを設定して load_registered_template を呼び出します。
my %templates_info = (...);
my $tmpl = load_registered_template_for( $blog_id, MT->component('Hoge'), 'hoge', \%templates_info );
環境変数 FourceBackgroundTasks が指定されている場合に、渡された処理をMTの BackgroundTasks として実行します。
渡された MT::Blog オブジェクトがウェブサイトの場合、ウェブサイト及び配下のブログを配列で返します。 MT::Blog オブジェクトがブログの場合は、指定された単一のブログが配列として返されます。
渡された MT::Blog オブジェクトがブログの場合、ウェブサイト及び自身のブログのIDを配列で返します。 MT::Blog オブジェクトがウェブサイトの場合は、指定された単一のウェブサイトのIDが配列として返されます。
MT::Blog オブジェクトが渡された場合、オブジェクトがウェブサイトの場合はウェブサイト及び 配下のブログのIDの配列を、オブジェクトがブログの場合、親ウェブサイト及び配下のブログのIDの 配列を返します。 MT::Blog オブジェクトが渡されなかった場合は、すべてのウェブサイト/ブログのIDの配列を返します。
ブロックタグのモディファイア blog_ids, include_blogs, exclude_blogs, site_ids, include_websites, exclude_websites から対象ブログのIDの配列を返します。
ブロックタグのモディファイア include_blogsと同じ文字列として渡すことで対象ブログのIDの配列を返します。
渡された MT::Blog オブジェクトがブログの場合、ウェブサイト及び自身のブログを配列で返します。 MT::Blog オブジェクトがウェブサイトの場合は、指定された単一のウェブサイトが配列として返されます。
すべてのウェブサイト/ブログを配列として返します。
システムに登録されているウェブサイトを一つロードして返します。
文字列をセパレータ文字列で分割して配列を返します。
配列のアイテムからスペースを削除します。
テキストログをファイルに( 追記して )出力します。
ブログを指定した場合、ブログ、ウェブサイト、システムの順でプラグイン設定 $key の値を検索し、取得出来た時点でその値を返します。 ウェブサイトを指定した場合、ウェブサイト、システムの順でプラグイン設定 $key の値を検索し、取得出来た時点でその値を返します。 第三引数を省略した場合、システムプラグイン設定を返します。
プラグイン名
プラグイン設定のキー
プラグインディレクトリ直下の $dirname ( 省略の場合 'tmpl' ) ディレクトリへのフルパスを返します。
テキストからhttpではじまるURLへのリンクを抽出してテキストに含まれる MT::Asset オブジェクトの配列を返します。
テキストから IMG要素を抽出してファイルを検索し、存在すればサムネイルを作成します。 =head3 args
MT::Blog オブジェクト
処理対象のテキスト
イメージの拡張子(省略時auto)
サムネイルのサイズ( $dimension で width か height を指定可能です )。
指定した場合、サムネイルから指定サイズの画像にリンクが貼られます。
width または height
作成されたサムネイルのパスを convert_gif_png に渡します。
MT::Asset オブジェクトからサムネイルを作成します。
MT::Blog オブジェクト
MT::Asset オブジェクト
$asset->thumbnail_file に渡すパラメタを指定します。例:
%param = ( Width => 240, # required Path => $dir, # optional # (省略時 $asset->_make_cache_path ) convert_gif_png => $convert_gif_png, # optional # (指定した場合 convert_gif_png を呼び出す) );