Permalink
Browse files

first commit

  • Loading branch information...
0 parents commit 9a3b3048641f815f58bb54a0ccf0be6ff961be5e @kurozumi committed Jan 10, 2017
@@ -0,0 +1,2 @@
+*.tar.gz
+*.DS_Store
@@ -0,0 +1,261 @@
+<?php
+
+/*
+ * This file is part of EC-CUBE
+ *
+ * Copyright(c) 2000-2014 LOCKON CO.,LTD. All Rights Reserved.
+ *
+ * http://www.lockon.co.jp/
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ *
+ */
+
+/**
+ * プラグインの基底クラス
+ *
+ * @package Plugin
+ * @author LOCKON CO.,LTD.
+ * @version $Id: $
+ */
+class OrderByPoint extends SC_Plugin_Base
+{
+
+ /**
+ * コンストラクタ
+ *
+ * @param array $arrSelfInfo 自身のプラグイン情報
+ * @return void
+ */
+ public function __construct(array $arrSelfInfo)
+ {
+ // プラグインを有効化したときの初期設定をココに追加する
+ if ($arrSelfInfo["enable"] == 1) {
+
+ }
+ }
+
+ /**
+ * インストール
+ * installはプラグインのインストール時に実行されます.
+ * 引数にはdtb_pluginのプラグイン情報が渡されます.
+ *
+ * @param array $arrPlugin plugin_infoを元にDBに登録されたプラグイン情報(dtb_plugin)
+ * @return void
+ */
+ public function install($arrPlugin, $objPluginInstaller = null)
+ {
+ // 管理用のページを配置。
+ $src_dir = PLUGIN_UPLOAD_REALDIR . "{$arrPlugin["plugin_code"]}/html/admin/";
+ $dest_dir = HTML_REALDIR . ADMIN_DIR;
+ SC_Utils::copyDirectory($src_dir, $dest_dir);
+
+ // テンプレートを配置。
+ $src_dir = PLUGIN_UPLOAD_REALDIR . "{$arrPlugin["plugin_code"]}/data/Smarty/templates/";
+ $dest_dir = SMARTY_TEMPLATES_REALDIR;
+ SC_Utils::copyDirectory($src_dir, $dest_dir);
+ }
+
+ /**
+ * アンインストール
+ * uninstallはアンインストール時に実行されます.
+ * 引数にはdtb_pluginのプラグイン情報が渡されます.
+ *
+ * @param array $arrPlugin プラグイン情報の連想配列(dtb_plugin)
+ * @return void
+ */
+ public function uninstall($arrPlugin, $objPluginInstaller = null)
+ {
+ // 管理用のページを削除。
+ $target_dir = HTML_REALDIR . ADMIN_DIR;
+ $source_dir = PLUGIN_UPLOAD_REALDIR . "{$arrPlugin["plugin_code"]}/html/admin/";
+ self::deleteDirectory($target_dir, $source_dir);
+
+ // テンプレートを削除。
+ $target_dir = SMARTY_TEMPLATES_REALDIR;
+ $source_dir = PLUGIN_UPLOAD_REALDIR . "{$arrPlugin["plugin_code"]}/data/Smarty/templates/";
+ self::deleteDirectory($target_dir, $source_dir);
+ }
+
+ /**
+ * 稼働
+ * enableはプラグインを有効にした際に実行されます.
+ * 引数にはdtb_pluginのプラグイン情報が渡されます.
+ *
+ * @param array $arrPlugin プラグイン情報の連想配列(dtb_plugin)
+ * @return void
+ */
+ public function enable($arrPlugin, $objPluginInstaller = null)
+ {
+
+ }
+
+ /**
+ * 停止
+ * disableはプラグインを無効にした際に実行されます.
+ * 引数にはdtb_pluginのプラグイン情報が渡されます.
+ *
+ * @param array $arrPlugin プラグイン情報の連想配列(dtb_plugin)
+ * @return void
+ */
+ public function disable($arrPlugin, $objPluginInstaller = null)
+ {
+
+ }
+
+ /**
+ * プラグインヘルパーへ, コールバックメソッドを登録します.
+ *
+ * @param integer $priority
+ */
+ public function register(SC_Helper_Plugin $objHelperPlugin, $priority)
+ {
+ $objHelperPlugin->addAction("prefilterTransform", array(&$this, "prefilterTransform"), $priority);
+ $objHelperPlugin->addAction("LC_Page_Products_List_action_after", array(&$this, "products_list_action_after"), $priority);
+ }
+
+ /**
+ * @param LC_Page_Admin_Products_Product $objPage 商品管理のページクラス
+ * @return void
+ */
+ function products_list_action_after(LC_Page_EX $objPage)
+ {
+ if ($objPage->orderby != "point")
+ return;
+
+ $objProduct = new SC_Product_Ex();
+
+ // パラメーター管理クラス
+ $objFormParam = new SC_FormParam_Ex();
+
+ // パラメーター情報の初期化
+ $objPage->lfInitParam($objFormParam);
+
+ // 値の設定
+ $objFormParam->setParam($_REQUEST);
+
+ // 入力値の変換
+ $objFormParam->convParam();
+
+ // 商品一覧データの取得
+ $arrSearchCondition = $objPage->lfGetSearchCondition($objPage->arrSearchData);
+ $objPage->tpl_linemax = $objPage->lfGetProductAllNum($arrSearchCondition);
+
+ $objPage->objNavi = new SC_PageNavi_Ex($objPage->tpl_pageno, $objPage->tpl_linemax, $objPage->disp_number, 'eccube.movePage', NAVI_PMAX, $urlParam, SC_Display_Ex::detectDevice() !== DEVICE_TYPE_MOBILE);
+ $objPage->arrProducts = $this->lfGetProductsList($arrSearchCondition, $objPage->disp_number, $objPage->objNavi->start_row, $objProduct);
+
+ switch ($objPage->getMode()) {
+ case 'json':
+ $objPage->doJson($objProduct);
+ break;
+
+ default:
+ $objPage->doDefault($objProduct, $objFormParam);
+ break;
+ }
+ }
+
+ /**
+ * 商品一覧の表示
+ *
+ * @param SC_Product_Ex $objProduct
+ */
+ public function lfGetProductsList($searchCondition, $disp_number, $startno, &$objProduct)
+ {
+ $objQuery = & SC_Query_Ex::getSingletonInstance();
+
+ $arrOrderVal = array();
+
+ $objProduct->setProductsOrder('point_rate', 'dtb_products_class', 'DESC');
+
+ // 取得範囲の指定(開始行番号、行数のセット)
+ $objQuery->setLimitOffset($disp_number, $startno);
+ $objQuery->setWhere($searchCondition['where']);
+
+ // 表示すべきIDとそのIDの並び順を一気に取得
+ $arrProductId = $objProduct->findProductIdsOrder($objQuery, array_merge($searchCondition['arrval'], $arrOrderVal));
+
+ $objQuery = & SC_Query_Ex::getSingletonInstance();
+ $arrProducts = $objProduct->getListByProductIds($objQuery, $arrProductId);
+
+ // 規格を設定
+ $objProduct->setProductsClassByProductIds($arrProductId);
+ $arrProducts['productStatus'] = $objProduct->getProductStatus($arrProductId);
+
+ return $arrProducts;
+ }
+
+ /**
+ * テンプレートをフックする
+ *
+ * @param string &$source
+ * @param LC_Page_Ex $objPage
+ * @param string $filename
+ * @return void
+ */
+ public function prefilterTransform(&$source, LC_Page_Ex $objPage, $filename)
+ {
+ $objTransform = new SC_Helper_Transform($source);
+ switch ($objPage->arrPageLayout['device_type_id']) {
+ case DEVICE_TYPE_PC:
+ if (strpos($filename, "products/list.tpl") !== false) {
+ $template_path = "products/plg_OrderByPoint_list.tpl";
+ $template = "<!--{include file='{$template_path}'}-->";
+ $objTransform->select(".change")->appendFirst($template);
+ }
+ break;
+ case DEVICE_TYPE_MOBILE:
+ break;
+ case DEVICE_TYPE_SMARTPHONE:
+ break;
+ case DEVICE_TYPE_ADMIN:
+ default:
+ break;
+ }
+ $source = $objTransform->getHTML();
+ }
+
+ /**
+ * 指定されたパスを比較して再帰的に削除します。
+ *
+ * @param string $target_dir 削除対象のディレクトリ
+ * @param string $source_dir 比較対象のディレクトリ
+ */
+ public static function deleteDirectory($target_dir, $source_dir)
+ {
+ $dir = opendir($source_dir);
+ while ($name = readdir($dir)) {
+ if ($name == '.' || $name == '..') {
+ continue;
+ }
+ $target_path = $target_dir . '/' . $name;
+ $source_path = $source_dir . '/' . $name;
+
+ if (is_file($source_path)) {
+ if (is_file($target_path)) {
+ unlink($target_path);
+ GC_Utils::gfPrintLog("$target_path を削除しました。");
+ }
+ } elseif (is_dir($source_path)) {
+ if (is_dir($target_path)) {
+ self::deleteDirectory($target_path, $source_path);
+ }
+ }
+ }
+ closedir($dir);
+ }
+
+}
@@ -0,0 +1,27 @@
+<!--{*
+* This file is part of EC-CUBE
+*
+* Copyright(c) 2000-2014 LOCKON CO.,LTD. All Rights Reserved.
+*
+* http://www.lockon.co.jp/
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+*}-->
+
+<!--{if $orderby != "point"}-->
+<a href="javascript:fnChangeOrderby('point');">ポイント順</a>
+<!--{else}-->
+<strong>ポイント順</strong>
+<!--{/if}-->
No changes.
@@ -0,0 +1,74 @@
+<?php
+
+/*
+ * This file is part of EC-CUBE
+ *
+ * Copyright(c) 2000-2014 LOCKON CO.,LTD. All Rights Reserved.
+ *
+ * http://www.lockon.co.jp/
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ *
+ */
+
+/**
+ * プラグインの情報クラス
+ *
+ * @package Plugin
+ * @author LOCKON CO.,LTD.
+ * @version $Id: $
+ */
+class plugin_info
+{
+ /** プラグインコード(必須):システム上でのキーとなります。プラグインコードは一意である必要があります。 */
+ static $PLUGIN_CODE = "OrderByPoint";
+
+ /** プラグイン名(必須):プラグイン管理・画面出力(エラーメッセージetc)にはこの値が出力されます。 */
+ static $PLUGIN_NAME = "商品一覧ページをポイント順で並べ替え";
+
+ /** プラグインメインクラス名(必須):本体がプラグインを実行する際に呼ばれるクラス。拡張子は不要です。 */
+ static $CLASS_NAME = "OrderByPoint";
+
+ /** プラグインバージョン(必須) */
+ static $PLUGIN_VERSION = "1.0.0";
+
+ /** 本体対応バージョン(必須) */
+ static $COMPLIANT_VERSION = "2.13";
+
+ /** 作者(必須) */
+ static $AUTHOR = "kurozumi";
+
+ /** 説明(必須) */
+ static $DESCRIPTION = "商品一覧ページをポイント順で並べ替えができるプラグイン。";
+
+ /** 作者用のサイトURL:設定されている場合はプラグイン管理画面の作者名がリンクになります。 */
+ static $AUTHOR_SITE_URL = "http://a-zumi.net";
+
+ /** プラグインのサイトURL : 設定されている場合はプラグイン管理画面の作者名がリンクになります。 */
+ static $PLUGIN_SITE_URL = "http://a-zumi.net";
+
+ /** 使用するフックポイント:使用するフックポイントを設定すると、フックポイントが競合した際にアラートが出ます。
+ * ここで宣言するとインストール時にdtb_plugin_hookpointsに登録され、
+ * register関数を書かずにフックポイントでの介入が可能です。
+ */
+ static $HOOK_POINTS = array(
+ array("prefilterTransform", "prefilterTransform"), // コンパイル前のテンプレートをフック
+ );
+
+ /** ライセンス */
+ static $LICENSE = "LGPL";
+
+}
Oops, something went wrong.

0 comments on commit 9a3b304

Please sign in to comment.