예제 #1
0
 /**
  *
  * テンプレートの文言をフォームに入れる。
  * @param FormParam $objFormParam
  */
 public function changeData(&$objFormParam)
 {
     $template_id = $objFormParam->getValue('template_id');
     // 未選択時
     if (strlen($template_id) === 0) {
         $mailTemplates = null;
         // 有効選択時
     } elseif (Utils::sfIsInt($template_id)) {
         /* @var $objMailtemplate MailtemplateHelper */
         $objMailtemplate = Application::alias('eccube.helper.mailtemplate');
         $mailTemplates = $objMailtemplate->get($template_id);
         // 不正選択時
     } else {
         trigger_error('テンプレートの指定が不正。', E_USER_ERROR);
     }
     if (empty($mailTemplates)) {
         foreach (array('subject', 'header', 'footer') as $key) {
             $objFormParam->setValue($key, '');
         }
     } else {
         $objFormParam->setParam($mailTemplates);
     }
     return $objFormParam;
 }
예제 #2
0
 /**
  * APIのリクエスト基本パラメーターのチェック
  *
  * @param FormParam $objFormParam
  * @return array $arrErr
  */
 protected function checkParam($objFormParam)
 {
     $arrErr = $objFormParam->checkError();
     if (!preg_match("/^[a-zA-Z0-9\\-\\_]+\$/", $objFormParam->getValue('Operation')) && !Utils::isBlank($objFormParam->getValue('Operation'))) {
         $arrErr['ECCUBE.Operation.ParamError'] = 'Operationの値が不正です。';
     }
     if (!preg_match("/^[a-zA-Z0-9\\-\\_]+\$/", $objFormParam->getValue('Service')) && !Utils::isBlank($objFormParam->getValue('Service'))) {
         $arrErr['ECCUBE.Service.ParamError'] = 'Serviceの値が不正です。';
     }
     if (!preg_match("/^[a-zA-Z0-9\\-\\_]+\$/", $objFormParam->getValue('Style')) && !Utils::isBlank($objFormParam->getValue('Style'))) {
         $arrErr['ECCUBE.Style.ParamError'] = 'Styleの値が不正です。';
     }
     if (!preg_match("/^[a-zA-Z0-9\\-\\_]+\$/", $objFormParam->getValue('Validate')) && !Utils::isBlank($objFormParam->getValue('Validate'))) {
         $arrErr['ECCUBE.Validate.ParamError'] = 'Validateの値が不正です。';
     }
     if (!preg_match("/^[a-zA-Z0-9\\-\\_\\.]+\$/", $objFormParam->getValue('Version')) && !Utils::isBlank($objFormParam->getValue('Version'))) {
         $arrErr['ECCUBE.Version.ParamError'] = 'Versionの値が不正です。';
     }
     return $arrErr;
 }
예제 #3
0
 /**
  * カテゴリの表示順序を下へ移動する.
  *
  * @param  FormParam $objFormParam
  * @return void
  */
 public function doDown(&$objFormParam)
 {
     /* @var $objCategory CategoryHelper */
     $objCategory = Application::alias('eccube.helper.category', false);
     $category_id = $objFormParam->getValue('category_id');
     $objCategory->rankDown($category_id);
 }
예제 #4
0
 /**
  * @param string $mode
  * @param boolean $tpl_classcat_find1
  * @param boolean $tpl_classcat_find2
  */
 public function lfCheckError($mode, FormParam &$objFormParam, $tpl_classcat_find1 = null, $tpl_classcat_find2 = null)
 {
     switch ($mode) {
         case 'add_favorite_sphone':
         case 'add_favorite':
             /* @var $objCustomer Customer */
             $objCustomer = Application::alias('eccube.customer');
             /* @var $objErr CheckError */
             $objErr = Application::alias('eccube.check_error');
             $customer_id = $objCustomer->getValue('customer_id');
             $favorite_product_id = $objFormParam->getValue('favorite_product_id');
             if (Application::alias('eccube.helper.db')->dataExists('dtb_customer_favorite_products', 'customer_id = ? AND product_id = ?', array($customer_id, $favorite_product_id))) {
                 $objErr->arrErr['add_favorite' . $favorite_product_id] = '※ この商品は既にお気に入りに追加されています。<br />';
             }
             break;
         default:
             // 入力データを渡す。
             $arrRet = $objFormParam->getHashArray();
             /* @var $objErr CheckError */
             $objErr = Application::alias('eccube.check_error', $arrRet);
             $objErr->arrErr = $objFormParam->checkError();
             // 複数項目チェック
             if ($tpl_classcat_find1) {
                 $objErr->doFunc(array('規格1', 'classcategory_id1'), array('EXIST_CHECK'));
             }
             if ($tpl_classcat_find2) {
                 $objErr->doFunc(array('規格2', 'classcategory_id2'), array('EXIST_CHECK'));
             }
             break;
     }
     return $objErr->arrErr;
 }
예제 #5
0
 /**
  *  入力内容のチェック
  *  @var FormParam
  * @param FormParam $objFormParam
  */
 public function lfCheckError(&$objFormParam)
 {
     // 入力データを渡す。
     $arrParams = $objFormParam->getHashArray();
     $arrErr = $objFormParam->checkError();
     /* @var $objErr CheckError */
     $objError = Application::alias('eccube.check_error', $arrParams);
     $year = $objFormParam->getValue('year');
     if (!is_numeric($year)) {
         $arrErr['year'] = '発行年は数値で入力してください。';
     }
     $month = $objFormParam->getValue('month');
     if (!is_numeric($month)) {
         $arrErr['month'] = '発行月は数値で入力してください。';
     } elseif (0 >= $month && 12 < $month) {
         $arrErr['month'] = '発行月は1〜12の間で入力してください。';
     }
     $day = $objFormParam->getValue('day');
     if (!is_numeric($day)) {
         $arrErr['day'] = '発行日は数値で入力してください。';
     } elseif (0 >= $day && 31 < $day) {
         $arrErr['day'] = '発行日は1〜31の間で入力してください。';
     }
     $objError->doFunc(array('発行日', 'year', 'month', 'day'), array('CHECK_DATE'));
     $arrErr = array_merge($arrErr, $objError->arrErr);
     return $arrErr;
 }
예제 #6
0
 /**
  * 表示するファイルにエラーチェックを行う
  *
  * @param  FormParam $objFormParam FormParam インスタンス
  * @return boolean       $file_check_flg エラーチェックの結果
  */
 public function checkErrorDispFile($objFormParam)
 {
     $file_check_flg = false;
     // FIXME パスのチェック関数が必要
     $file = $objFormParam->getValue('file');
     $path_exists = Utils::checkFileExistsWithInBasePath($file, USER_REALDIR);
     if ($path_exists) {
         $file_check_flg = true;
     }
     return $file_check_flg;
 }
예제 #7
0
 /**
  * @param FormParam $objFormParam
  */
 public function lfGetTargetData(&$objFormParam)
 {
     $objQuery = Application::alias('eccube.query');
     $arrIndexFlag = $objFormParam->getValue('indexflag');
     $arrIndexFlagNew = $objFormParam->getValue('indexflag_new');
     $arrTableName = $objFormParam->getValue('table_name');
     $arrColumnName = $objFormParam->getValue('column_name');
     $arrTarget = array();
     $message = '';
     // 変更されている対象を走査
     for ($i = 1; $i <= count($arrIndexFlag); $i++) {
         //入力値チェック
         $param = array('indexflag' => $arrIndexFlag[$i], 'indexflag_new' => $arrIndexFlagNew[$i], 'table_name' => $arrTableName[$i], 'column_name' => $arrColumnName[$i]);
         /* @var $objErr CheckError */
         $objErr = Application::alias('eccube.check_error', $param);
         $objErr->doFunc(array('インデックス(' . $i . ')', 'indexflag', INT_LEN), array('NUM_CHECK'));
         $objErr->doFunc(array('インデックス変更後(' . $i . ')', 'indexflag_new', INT_LEN), array('NUM_CHECK'));
         $objErr->doFunc(array('インデックス変更後(' . $i . ')', 'indexflag_new', INT_LEN), array('NUM_CHECK'));
         $objErr->doFunc(array('テーブル名(' . $i . ')', 'table_name', STEXT_LEN), array('GRAPH_CHECK', 'EXIST_CHECK', 'MAX_LENGTH_CHECK'));
         $objErr->doFunc(array('カラム名(' . $i . ')', 'column_name', STEXT_LEN), array('GRAPH_CHECK', 'EXIST_CHECK', 'MAX_LENGTH_CHECK'));
         $arrErr = $objErr->arrErr;
         if (count($arrErr) != 0) {
             // 通常の送信ではエラーにならないはずです。
             $message = "window.alert('不正なデータがあったため処理を中断しました。');";
             return $message;
         }
         if ($param['indexflag'] != $param['indexflag_new']) {
             // 入力値がデータにある対象テーブルかのチェック
             if ($objQuery->exists('dtb_index_list', 'table_name = ? and column_name = ?', array($param['table_name'], $param['column_name']))) {
                 $arrTarget[] = $param;
             }
         }
     }
     return $arrTarget;
 }
예제 #8
0
 /**
  * DBおよびファイルシステムにテンプレートパッケージを追加する.
  *
  * エラーが発生した場合は, エラーを出力し, false を返す.
  *
  * @param  FormParam  $objFormParam FormParamのインスタンス
  * @param  UploadFile  $objUpFile    UploadFileのインスタンス
  * @return boolean 成功した場合 true; 失敗した場合 false
  */
 public function doUpload($objFormParam, $objUpFile)
 {
     $template_code = $objFormParam->getValue('template_code');
     $template_name = $objFormParam->getValue('template_name');
     $device_type_id = $objFormParam->getValue('device_type_id');
     $template_dir = SMARTY_TEMPLATES_REALDIR . $template_code;
     $compile_dir = DATA_REALDIR . 'Smarty/templates_c/' . $template_code;
     $objQuery = Application::alias('eccube.query');
     $objQuery->begin();
     $arrValues = array('template_code' => $template_code, 'device_type_id' => $device_type_id, 'template_name' => $template_name, 'create_date' => 'CURRENT_TIMESTAMP', 'update_date' => 'CURRENT_TIMESTAMP');
     $objQuery->insert('dtb_templates', $arrValues);
     // フォルダ作成
     if (!file_exists($template_dir)) {
         if (!mkdir($template_dir)) {
             $this->arrErr['err'] = '※ テンプレートフォルダが作成できませんでした。<br/>';
             $objQuery->rollback();
             return false;
         }
     }
     if (!file_exists($compile_dir)) {
         if (!mkdir($compile_dir)) {
             $this->arrErr['err'] = '※ Smarty コンパイルフォルダが作成できませんでした。<br/>';
             $objQuery->rollback();
             return false;
         }
     }
     // 一時フォルダから保存ディレクトリへ移動
     $objUpFile->moveTempFile();
     // 解凍
     if (!Application::alias('eccube.helper.file_manager')->unpackFile($template_dir . '/' . $_FILES['template_file']['name'])) {
         $this->arrErr['err'] = '※ テンプレートファイルの解凍に失敗しました。<br/>';
         $objQuery->rollback();
         return false;
     }
     // ユーザデータの下のファイルをコピーする
     $from_dir = SMARTY_TEMPLATES_REALDIR . $template_code . '/_packages/';
     $to_dir = USER_REALDIR . 'packages/' . $template_code . '/';
     if (!Utils::recursiveMkdir($to_dir)) {
         $this->arrErr['err'] = '※ ' . $to_dir . ' の作成に失敗しました。<br/>';
         $objQuery->rollback();
         return false;
     }
     Utils::sfCopyDir($from_dir, $to_dir);
     $objQuery->commit();
     return true;
 }
예제 #9
0
 /**
  * SQL詳細設定情報呼び出し (編集中データがある場合はそれを保持する)
  *
  * @param  FormParam $objFormParam フォームパラメータークラス
  * @return mixed 表示用パラメーター
  */
 public function lfGetSqlData(&$objFormParam)
 {
     // 編集中データがある場合
     if (!Utils::isBlank($objFormParam->getValue('sql_name')) || !Utils::isBlank($objFormParam->getValue('csv_sql'))) {
         return $objFormParam->getHashArray();
     }
     $sql_id = $objFormParam->getValue('sql_id');
     if (!Utils::isBlank($sql_id)) {
         $arrData = $this->lfGetSqlList('sql_id = ?', array($sql_id));
         return $arrData[0];
     }
     return array();
 }
예제 #10
0
 /**
  * @param FormParam $objFormParam
  */
 public function lfCheckError(&$objFormParam)
 {
     $objFormParam->convParam();
     /* @var $objErr CheckError */
     $objErr = Application::alias('eccube.check_error', $objFormParam->getHashArray());
     $objErr->arrErr = $objFormParam->checkError();
     // 特殊項目チェック
     // 月度集計
     if ($objFormParam->getValue('search_form') == 1) {
         $objErr->doFunc(array('月度', 'search_startyear_m', 'search_startmonth_m'), array('FULL_EXIST_CHECK'));
     }
     // 期間集計
     if ($objFormParam->getValue('search_form') == 2) {
         $objErr->doFunc(array('期間(開始日)', 'search_startyear', 'search_startmonth', 'search_startday'), array('FULL_EXIST_CHECK'));
         $objErr->doFunc(array('期間(終了日)', 'search_endyear', 'search_endmonth', 'search_endday'), array('FULL_EXIST_CHECK'));
         $objErr->doFunc(array('期間(開始日)', 'search_startyear', 'search_startmonth', 'search_startday'), array('CHECK_DATE'));
         $objErr->doFunc(array('期間(終了日)', 'search_endyear', 'search_endmonth', 'search_endday'), array('CHECK_DATE'));
         $objErr->doFunc(array('期間(開始日)', '期間(終了日)', 'search_startyear', 'search_startmonth', 'search_startday', 'search_endyear', 'search_endmonth', 'search_endday'), array('CHECK_SET_TERM'));
     }
     return $objErr->arrErr;
 }
예제 #11
0
 /**
  * 登録を実行する.
  *
  * ファイルの作成に失敗した場合は, エラーメッセージを出力する.
  *
  * @param  FormParam    $objFormParam FormParam インスタンス
  * @return boolean 登録が成功した場合 true; 失敗した場合 false
  */
 public function doRegister(&$objFormParam)
 {
     $division = $objFormParam->getValue('division');
     $contents = $objFormParam->getValue($division);
     $tpl_path = $this->getTemplatePath($objFormParam->getValue('device_type_id'), $division);
     if ($tpl_path === false || !Application::alias('eccube.helper.file_manager')->sfWriteFile($tpl_path, $contents)) {
         $this->arrErr['err'] = '※ ファイルの書き込みに失敗しました<br />';
         return false;
     }
     return true;
 }
예제 #12
0
 /**
  * 現在の階層がルートディレクトリかどうかテンプレートに渡す
  *
  * @param  FormParam $objFormParam FormParamインスタンス
  * @return void
  */
 public function setIsTopDir($objFormParam)
 {
     // トップディレクトリか調査
     $is_top_dir = false;
     // 末尾の/をとる
     $top_dir_check = rtrim($objFormParam->getValue('top_dir'), '/');
     $now_dir_check = rtrim($objFormParam->getValue('now_dir'), '/');
     if ($top_dir_check == $now_dir_check) {
         $is_top_dir = true;
     }
     $this->setDispParam('tpl_is_top_dir', $is_top_dir);
 }
예제 #13
0
 /**
  * クエリを構築する.
  *
  * 検索条件のキーに応じた WHERE 句と, クエリパラメーターを構築する.
  * クエリパラメーターは, FormParam の入力値から取得する.
  *
  * 構築内容は, 引数の $where 及び $arrValues にそれぞれ追加される.
  *
  * @param  string       $key          検索条件のキー
  * @param  string       $where        構築する WHERE 句
  * @param  array        $arrValues    構築するクエリパラメーター
  * @param  FormParam $objFormParam FormParam インスタンス
  * @return void
  */
 public function buildQuery($key, &$where, &$arrValues, &$objFormParam)
 {
     /* @var $dbFactory DBFactory */
     $dbFactory = Application::alias('eccube.db.factory');
     switch ($key) {
         case 'search_product_name':
             $where .= ' AND EXISTS (SELECT 1 FROM dtb_order_detail od WHERE od.order_id = dtb_order.order_id AND od.product_name LIKE ?)';
             $arrValues[] = sprintf('%%%s%%', $objFormParam->getValue($key));
             break;
         case 'search_order_name':
             $where .= ' AND ' . $dbFactory->concatColumn(array('order_name01', 'order_name02')) . ' LIKE ?';
             $arrValues[] = sprintf('%%%s%%', preg_replace('/[  ]/u', '', $objFormParam->getValue($key)));
             break;
         case 'search_order_kana':
             $where .= ' AND ' . $dbFactory->concatColumn(array('order_kana01', 'order_kana02')) . ' LIKE ?';
             $arrValues[] = sprintf('%%%s%%', preg_replace('/[  ]/u', '', $objFormParam->getValue($key)));
             break;
         case 'search_order_id1':
             $where .= ' AND order_id >= ?';
             $arrValues[] = sprintf('%d', $objFormParam->getValue($key));
             break;
         case 'search_order_id2':
             $where .= ' AND order_id <= ?';
             $arrValues[] = sprintf('%d', $objFormParam->getValue($key));
             break;
         case 'search_order_sex':
             $tmp_where = '';
             foreach ($objFormParam->getValue($key) as $element) {
                 if ($element != '') {
                     if (Utils::isBlank($tmp_where)) {
                         $tmp_where .= ' AND (order_sex = ?';
                     } else {
                         $tmp_where .= ' OR order_sex = ?';
                     }
                     $arrValues[] = $element;
                 }
             }
             if (!Utils::isBlank($tmp_where)) {
                 $tmp_where .= ')';
                 $where .= " {$tmp_where} ";
             }
             break;
         case 'search_order_tel':
             $where .= ' AND (' . $dbFactory->concatColumn(array('order_tel01', 'order_tel02', 'order_tel03')) . ' LIKE ?)';
             $arrValues[] = SelectSql::addSearchStr(preg_replace('/[()-]+/', '', $objFormParam->getValue($key)));
             break;
         case 'search_order_email':
             $where .= ' AND order_email LIKE ?';
             $arrValues[] = sprintf('%%%s%%', $objFormParam->getValue($key));
             break;
         case 'search_payment_id':
             $tmp_where = '';
             foreach ($objFormParam->getValue($key) as $element) {
                 if ($element != '') {
                     if ($tmp_where == '') {
                         $tmp_where .= ' AND (payment_id = ?';
                     } else {
                         $tmp_where .= ' OR payment_id = ?';
                     }
                     $arrValues[] = $element;
                 }
             }
             if (!Utils::isBlank($tmp_where)) {
                 $tmp_where .= ')';
                 $where .= " {$tmp_where} ";
             }
             break;
         case 'search_total1':
             $where .= ' AND total >= ?';
             $arrValues[] = sprintf('%d', $objFormParam->getValue($key));
             break;
         case 'search_total2':
             $where .= ' AND total <= ?';
             $arrValues[] = sprintf('%d', $objFormParam->getValue($key));
             break;
         case 'search_sorderyear':
             $date = Utils::sfGetTimestamp($objFormParam->getValue('search_sorderyear'), $objFormParam->getValue('search_sordermonth'), $objFormParam->getValue('search_sorderday'));
             $where .= ' AND create_date >= ?';
             $arrValues[] = $date;
             break;
         case 'search_eorderyear':
             $date = Utils::sfGetTimestamp($objFormParam->getValue('search_eorderyear'), $objFormParam->getValue('search_eordermonth'), $objFormParam->getValue('search_eorderday'), true);
             $where .= ' AND create_date <= ?';
             $arrValues[] = $date;
             break;
         case 'search_supdateyear':
             $date = Utils::sfGetTimestamp($objFormParam->getValue('search_supdateyear'), $objFormParam->getValue('search_supdatemonth'), $objFormParam->getValue('search_supdateday'));
             $where .= ' AND update_date >= ?';
             $arrValues[] = $date;
             break;
         case 'search_eupdateyear':
             $date = Utils::sfGetTimestamp($objFormParam->getValue('search_eupdateyear'), $objFormParam->getValue('search_eupdatemonth'), $objFormParam->getValue('search_eupdateday'), true);
             $where .= ' AND update_date <= ?';
             $arrValues[] = $date;
             break;
         case 'search_sbirthyear':
             $date = Utils::sfGetTimestamp($objFormParam->getValue('search_sbirthyear'), $objFormParam->getValue('search_sbirthmonth'), $objFormParam->getValue('search_sbirthday'));
             $where .= ' AND order_birth >= ?';
             $arrValues[] = $date;
             break;
         case 'search_ebirthyear':
             $date = Utils::sfGetTimestamp($objFormParam->getValue('search_ebirthyear'), $objFormParam->getValue('search_ebirthmonth'), $objFormParam->getValue('search_ebirthday'), true);
             $where .= ' AND order_birth <= ?';
             $arrValues[] = $date;
             break;
         case 'search_order_status':
             $where .= ' AND status = ?';
             $arrValues[] = $objFormParam->getValue($key);
             break;
         default:
             break;
     }
 }
예제 #14
0
 /**
  * クエリを構築する.
  *
  * 検索条件のキーに応じた WHERE 句と, クエリパラメーターを構築する.
  * クエリパラメーターは, FormParam の入力値から取得する.
  *
  * 構築内容は, 引数の $where 及び $arrValues にそれぞれ追加される.
  *
  * @param  string       $key          検索条件のキー
  * @param  string       $where        構築する WHERE 句
  * @param  array        $arrValues    構築するクエリパラメーター
  * @param  FormParam $objFormParam FormParam インスタンス
  * @param  FormParam $objDb        DbHelper インスタンス
  * @return void
  */
 public function buildQuery($key, &$where, &$arrValues, &$objFormParam, &$objDb)
 {
     /* @var $dbFactory DBFactory */
     $dbFactory = Application::alias('eccube.db.factory');
     switch ($key) {
         // 商品ID
         case 'search_product_id':
             $where .= ' AND product_id = ?';
             $arrValues[] = sprintf('%d', $objFormParam->getValue($key));
             break;
             // 商品コード
         // 商品コード
         case 'search_product_code':
             $where .= ' AND product_id IN (SELECT product_id FROM dtb_products_class WHERE product_code ILIKE ? AND del_flg = 0)';
             $arrValues[] = sprintf('%%%s%%', $objFormParam->getValue($key));
             break;
             // 商品名
         // 商品名
         case 'search_name':
             $where .= ' AND name LIKE ?';
             $arrValues[] = sprintf('%%%s%%', $objFormParam->getValue($key));
             break;
             // カテゴリ
         // カテゴリ
         case 'search_category_id':
             list($tmp_where, $tmp_Values) = $objDb->getCatWhere($objFormParam->getValue($key));
             if ($tmp_where != '') {
                 $where .= ' AND product_id IN (SELECT product_id FROM dtb_product_categories WHERE ' . $tmp_where . ')';
                 $arrValues = array_merge((array) $arrValues, (array) $tmp_Values);
             }
             break;
             // 種別
         // 種別
         case 'search_status':
             $tmp_where = '';
             foreach ($objFormParam->getValue($key) as $element) {
                 if ($element != '') {
                     if (Utils::isBlank($tmp_where)) {
                         $tmp_where .= ' AND (status = ?';
                     } else {
                         $tmp_where .= ' OR status = ?';
                     }
                     $arrValues[] = $element;
                 }
             }
             if (!Utils::isBlank($tmp_where)) {
                 $tmp_where .= ')';
                 $where .= " {$tmp_where} ";
             }
             break;
             // 登録・更新日(開始)
         // 登録・更新日(開始)
         case 'search_startyear':
             $date = Utils::sfGetTimestamp($objFormParam->getValue('search_startyear'), $objFormParam->getValue('search_startmonth'), $objFormParam->getValue('search_startday'));
             $where .= ' AND update_date >= ?';
             $arrValues[] = $date;
             break;
             // 登録・更新日(終了)
         // 登録・更新日(終了)
         case 'search_endyear':
             $date = Utils::sfGetTimestamp($objFormParam->getValue('search_endyear'), $objFormParam->getValue('search_endmonth'), $objFormParam->getValue('search_endday'), true);
             $where .= ' AND update_date <= ?';
             $arrValues[] = $date;
             break;
             // 商品ステータス
         // 商品ステータス
         case 'search_product_statuses':
             $arrPartVal = $objFormParam->getValue($key);
             $count = count($arrPartVal);
             if ($count >= 1) {
                 $where .= ' ' . 'AND product_id IN (' . '    SELECT product_id FROM dtb_product_status WHERE product_status_id IN (' . Utils::repeatStrWithSeparator('?', $count) . ')' . ')';
                 $arrValues = array_merge($arrValues, $arrPartVal);
             }
             break;
         default:
             break;
     }
 }
예제 #15
0
 /**
  * 配送情報を保存する.
  *
  * @param FormParam $objFormParam FormParam インスタンス
  * @param array        $arrDelivTime 配送時間の配列
  */
 public function saveShippings(&$objFormParam, $arrDelivTime)
 {
     // ダウンロード商品の場合は配送先が存在しない
     if ($this->is_download) {
         return;
     }
     $deliv_id = $objFormParam->getValue('deliv_id');
     /* TODO
      * Purchase::getShippingTemp() で取得して,
      * リファレンスで代入すると, セッションに添字を追加できない?
      */
     foreach (array_keys($_SESSION['shipping']) as $key) {
         $shipping_id = $_SESSION['shipping'][$key]['shipping_id'];
         $time_id = $objFormParam->getValue('deliv_time_id' . $shipping_id);
         $_SESSION['shipping'][$key]['deliv_id'] = $deliv_id;
         $_SESSION['shipping'][$key]['time_id'] = $time_id;
         $_SESSION['shipping'][$key]['shipping_time'] = $arrDelivTime[$time_id];
         $_SESSION['shipping'][$key]['shipping_date'] = $objFormParam->getValue('deliv_date' . $shipping_id);
     }
 }
예제 #16
0
 /**
  * ブロックを配置する.
  *
  * @param  FormParam $objFormParam FormParam インスタンス
  * @param  boolean      $is_preview   プレビュー時の場合 true
  * @return void
  */
 public function placingBlocs(&$objFormParam, $is_preview = false)
 {
     $page_id = $is_preview ? 0 : $objFormParam->getValue('page_id');
     $device_type_id = $objFormParam->getValue('device_type_id');
     $bloc_cnt = $objFormParam->getValue('bloc_cnt');
     $objQuery = Application::alias('eccube.query');
     $objQuery->begin();
     $objQuery->delete('dtb_blocposition', 'page_id = ? AND device_type_id = ?', array($page_id, $device_type_id));
     $arrTargetFlip = array_flip($this->arrTarget);
     for ($i = 1; $i <= $bloc_cnt; $i++) {
         // bloc_id が取得できない場合は INSERT しない
         $id = $objFormParam->getValue('id_' . $i);
         if (Utils::isBlank($id)) {
             continue;
         }
         // 未使用は INSERT しない
         $arrParams['target_id'] = $arrTargetFlip[$objFormParam->getValue('target_id_' . $i)];
         if ($arrParams['target_id'] == TARGET_ID_UNUSED) {
             continue;
         }
         // 他のページに anywhere が存在する場合は INSERT しない
         $arrParams['anywhere'] = intval($objFormParam->getValue('anywhere_' . $i));
         if ($arrParams['anywhere'] == 1) {
             $exists = $objQuery->exists('dtb_blocposition', 'anywhere = 1 AND bloc_id = ? AND device_type_id = ?', array($id, $device_type_id));
             if ($exists) {
                 continue;
             }
         }
         $arrParams['device_type_id'] = $device_type_id;
         $arrParams['page_id'] = $page_id;
         $arrParams['bloc_id'] = $id;
         $arrParams['bloc_row'] = $objFormParam->getValue('top_' . $i);
         if ($arrParams['page_id'] == 0) {
             $arrParams['anywhere'] = 0;
         }
         $objQuery->insert('dtb_blocposition', $arrParams);
     }
     $objQuery->commit();
 }
예제 #17
0
 /**
  * 入力チェックを行う.
  *
  * @param   FormParam   $objFormParam FormParam インスタンス
  * @return  array       エラー情報の配列
  */
 public function lfCheckError(FormParam &$objFormParam, &$arrCartItem)
 {
     /* @var $objCartSess CartSession */
     $objCartSess = Application::alias('eccube.cart_session');
     $objFormParam->setValue('quantity', $objFormParam->getValue('quantity', 0));
     $arrErr = $objFormParam->checkError();
     $arrParams = $objFormParam->getSwapArray();
     if (empty($arrErr)) {
         $arrTarget = array('product_class_id', 'quantity', 'shipping');
         $arrParams = $objFormParam->getSwapArray($arrTarget);
         foreach ($arrParams as $index => $arrParam) {
             // 数量0で、お届け先を選択している場合
             if ($arrParam['quantity'] == 0 && !Utils::isBlank($arrParam['shipping'])) {
                 $arrErr['shipping'][$index] = '※ 数量が0の場合、お届け先を入力できません。<br />';
             }
             // 数量の入力があり、お届け先を選択していない場合
             if ($arrParam['quantity'] > 0 && Utils::isBlank($arrParam['shipping'])) {
                 $arrErr['shipping'][$index] = '※ お届け先が入力されていません。<br />';
             }
         }
     }
     // 入力エラーが無い場合、カゴの中身との数量の整合を確認
     if (empty($arrErr)) {
         $arrQuantity = array();
         // 入力内容を集計
         foreach ($arrParams as $arrParam) {
             $product_class_id = $arrParam['product_class_id'];
             $arrQuantity[$product_class_id] += $arrParam['quantity'];
         }
         // カゴの中身と突き合わせ
         foreach ($arrCartItem as $item) {
             $product_class_id = $item['id'];
             // 差異がある場合、エラーを記録
             if ($item['quantity'] != $arrQuantity[$product_class_id]) {
                 foreach ($arrParams as $index => $arrParam) {
                     if ($arrParam['product_class_id'] == $product_class_id) {
                         $arrErr['line_of_num'][$product_class_id] = "※ 数量合計を「{$item['quantity']}」にしてください。<br />";
                     }
                 }
             }
         }
     }
     return $arrErr;
 }
예제 #18
0
 /**
  * 登録を実行する.
  *
  * ファイルの作成に失敗した場合は, エラーメッセージを出力し,
  * データベースをロールバックする.
  *
  * @param  FormParam         $objFormParam FormParam インスタンス
  * @param  PageLayoutHelper $objLayout    PageLayoutHelper インスタンス
  * @return integer|boolean      登録が成功した場合, 登録したページID;
  *                         失敗した場合 false
  */
 public function doRegister(&$objFormParam, &$objLayout)
 {
     $filename = $objFormParam->getValue('filename');
     $arrParams['device_type_id'] = $objFormParam->getValue('device_type_id');
     $arrParams['page_id'] = $objFormParam->getValue('page_id');
     $arrParams['header_chk'] = intval($objFormParam->getValue('header_chk')) === 1 ? 1 : 2;
     $arrParams['footer_chk'] = intval($objFormParam->getValue('footer_chk')) === 1 ? 1 : 2;
     $arrParams['tpl_data'] = $objFormParam->getValue('tpl_data');
     $arrParams['page_name'] = $objFormParam->getValue('page_name');
     $arrParams['url'] = USER_DIR . $filename . '.php';
     $arrParams['filename'] = USER_DIR . $filename;
     $arrParams['author'] = $objFormParam->getValue('author');
     $arrParams['description'] = $objFormParam->getValue('description');
     $arrParams['keyword'] = $objFormParam->getValue('keyword');
     $arrParams['meta_robots'] = $objFormParam->getValue('meta_robots');
     $objQuery = Application::alias('eccube.query');
     $objQuery->begin();
     $page_id = $this->registerPage($arrParams, $objLayout);
     /*
      * 新規登録時
      * or 編集可能な既存ページ編集時かつ, PHP ファイルが存在しない場合に,
      * PHP ファイルを作成する.
      */
     if (Utils::isBlank($arrParams['page_id']) || $objLayout->isEditablePage($arrParams['device_type_id'], $arrParams['page_id'])) {
         if (!$this->createPHPFile($filename)) {
             $this->arrErr['err'] = '※ PHPファイルの作成に失敗しました<br />';
             $objQuery->rollback();
             return false;
         }
         // 新規登録時のみ $page_id を代入
         $arrParams['page_id'] = $page_id;
     }
     if ($objLayout->isEditablePage($arrParams['device_type_id'], $page_id)) {
         $tpl_path = $objLayout->getTemplatePath($arrParams['device_type_id']) . $arrParams['filename'] . '.tpl';
     } else {
         $tpl_path = $objLayout->getTemplatePath($arrParams['device_type_id']) . $filename . '.tpl';
     }
     if (!Application::alias('eccube.helper.file_manager')->sfWriteFile($tpl_path, $arrParams['tpl_data'])) {
         $this->arrErr['err'] = '※ TPLファイルの書き込みに失敗しました<br />';
         $objQuery->rollback();
         return false;
     }
     $objQuery->commit();
     return $arrParams['page_id'];
 }
예제 #19
0
 /**
  * 配信内容と配信リストを書き込む
  *
  * @param FormParam $objFormParam
  * @return integer 登録した行の dtb_send_history.send_id の値
  */
 public function lfRegisterData(&$objFormParam)
 {
     $objQuery = Application::alias('eccube.query');
     list($linemax, $arrSendCustomer, $objNavi) = Application::alias('eccube.helper.customer')->sfGetSearchData($objFormParam->getHashArray(), 'All');
     $send_customer_cnt = count($arrSendCustomer);
     $send_id = $objQuery->nextVal('dtb_send_history_send_id');
     $dtb_send_history = array();
     $dtb_send_history['mail_method'] = $objFormParam->getValue('mail_method');
     $dtb_send_history['subject'] = $objFormParam->getValue('subject');
     $dtb_send_history['body'] = $objFormParam->getValue('body');
     $dtb_send_history['start_date'] = 'CURRENT_TIMESTAMP';
     $dtb_send_history['creator_id'] = $_SESSION['member_id'];
     $dtb_send_history['send_count'] = $send_customer_cnt;
     $dtb_send_history['search_data'] = serialize($objFormParam->getSearchArray());
     $dtb_send_history['update_date'] = 'CURRENT_TIMESTAMP';
     $dtb_send_history['create_date'] = 'CURRENT_TIMESTAMP';
     $dtb_send_history['send_id'] = $send_id;
     $objQuery->insert('dtb_send_history', $dtb_send_history);
     // 「配信メールアドレス種別」に携帯メールアドレスが指定されている場合は、携帯メールアドレスに配信
     $emailtype = 'email';
     $searchmailtype = $objFormParam->getValue('search_mail_type');
     if ($searchmailtype == 2 || $searchmailtype == 4) {
         $emailtype = 'email_mobile';
     }
     if (is_array($arrSendCustomer)) {
         foreach ($arrSendCustomer as $line) {
             $dtb_send_customer = array();
             $dtb_send_customer['customer_id'] = $line['customer_id'];
             $dtb_send_customer['send_id'] = $send_id;
             $dtb_send_customer['email'] = $line[$emailtype];
             $dtb_send_customer['name'] = $line['name01'] . ' ' . $line['name02'];
             $objQuery->insert('dtb_send_customer', $dtb_send_customer);
         }
     }
     return $send_id;
 }
예제 #20
0
 /**
  * エラーチェックを行う.
  *
  * @param  FormParam $objFormParam FormParam インスタンス
  * @return array        エラーメッセージの配列
  */
 public function lfCheckError(&$objFormParam, &$arrErr)
 {
     $arrParams = $objFormParam->getHashArray();
     /* @var $objErr CheckError */
     $objErr = Application::alias('eccube.check_error', $arrParams);
     $objErr->arrErr =& $arrErr;
     $objErr->doFunc(array('CSSファイル名', 'css_name', STEXT_LEN), array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK', 'FILE_NAME_CHECK_BY_NOUPLOAD'));
     $css_name = $objFormParam->getValue('css_name');
     $old_css_name = $objFormParam->getValue('old_css_name');
     $device_type_id = $objFormParam->getValue('device_type_id', DEVICE_TYPE_PC);
     $is_error = false;
     // 重複チェック
     if (Utils::isBlank($objErr->arrErr['css_name'])) {
         $arrCSSList = $this->getCSSList($this->getCSSDir($device_type_id));
         foreach ($arrCSSList as $val) {
             if ($val['css_name'] == $css_name) {
                 if (Utils::isBlank($old_css_name) || $old_css_name != $css_name) {
                     $is_error = true;
                 }
             }
         }
         if ($is_error) {
             $objErr->arrErr['css_name'] = '※ 同じファイル名のデータが存在しています。別の名称を付けてください。<br />';
         }
     }
     return $objErr->arrErr;
 }
예제 #21
0
 /**
  * 受注商品一覧側に商品を追加
  *
  * @param FormParam  $objFormParam               FormParam インスタンス
  * @param array         $arrProductClassIds        対象配列の商品規格ID
  * @param int           $insert_product_class_id    追加商品規格ID
  * @param array         $arrAddProductInfo          追加データ
  * @return array|null   $arrAddProducts             更新データ
  */
 public function checkInsertOrderProducts(&$objFormParam, $arrProductClassIds, $insert_product_class_id, $arrAddProductInfo)
 {
     if (!$arrProductClassIds || !in_array($insert_product_class_id, $arrProductClassIds)) {
         $arrAddProducts = array();
         $arrTax = TaxRuleHelper::getTaxRule(0, $insert_product_class_id);
         $arrAddProductInfo['product_name'] = $arrAddProductInfo['product_name'] ? $arrAddProductInfo['product_name'] : $arrAddProductInfo['name'];
         $arrAddProductInfo['price'] = $arrAddProductInfo['price'] ? $arrAddProductInfo['price'] : $arrAddProductInfo['price02'];
         $arrAddProductInfo['quantity'] = 1;
         $arrAddProductInfo['tax_rate'] = $objFormParam->getValue('order_tax_rate') == '' ? $arrTax['tax_rate'] : $objFormParam->getValue('order_tax_rate');
         $arrAddProductInfo['tax_rule'] = $objFormParam->getValue('order_tax_rule') == '' ? $arrTax['tax_rule'] : $objFormParam->getValue('order_tax_rule');
         foreach ($this->arrProductKeys as $insert_key) {
             $value = $objFormParam->getValue($insert_key);
             $arrAddProducts[$insert_key] = is_array($value) ? $value : array();
             $arrAddProducts[$insert_key][] = $arrAddProductInfo[$insert_key];
         }
         return $arrAddProducts;
     } else {
         //受注商品の数量は、複数配送側の集計で出しているので、重複しても数量を増やさない。
         return null;
     }
 }
예제 #22
0
 /**
  * 受注データを取得して, FormParam へ設定する.
  *
  * @param  FormParam $objFormParam FormParam インスタンス
  * @param  integer      $order_id     取得元の受注ID
  * @return void
  */
 public function setOrderToFormParam(&$objFormParam, $order_id)
 {
     /* @var $objPurchase PurchaseHelper */
     $objPurchase = Application::alias('eccube.helper.purchase');
     // 受注詳細を設定
     $arrOrderDetail = $objPurchase->getOrderDetail($order_id, false);
     $objFormParam->setParam(Utils::sfSwapArray($arrOrderDetail));
     $arrShippingsTmp = $objPurchase->getShippings($order_id);
     $arrShippings = array();
     foreach ($arrShippingsTmp as $row) {
         // お届け日の処理
         if (!Utils::isBlank($row['shipping_date'])) {
             $ts = strtotime($row['shipping_date']);
             $row['shipping_date_year'] = date('Y', $ts);
             $row['shipping_date_month'] = date('n', $ts);
             $row['shipping_date_day'] = date('j', $ts);
         }
         $arrShippings[$row['shipping_id']] = $row;
     }
     $objFormParam->setParam(Utils::sfSwapArray($arrShippings));
     /*
      * 配送商品を設定
      *
      * $arrShipmentItem['shipment_(key)'][$shipping_id][$item_index] = 値
      * $arrProductQuantity[$shipping_id] = 配送先ごとの配送商品数量
      */
     $arrProductQuantity = array();
     $arrShipmentItem = array();
     foreach ($arrShippings as $shipping_id => $arrShipping) {
         $arrProductQuantity[$shipping_id] = count($arrShipping['shipment_item']);
         foreach ($arrShipping['shipment_item'] as $item_index => $arrItem) {
             foreach ($arrItem as $item_key => $item_val) {
                 $arrShipmentItem['shipment_' . $item_key][$shipping_id][$item_index] = $item_val;
             }
         }
     }
     $objFormParam->setValue('shipping_product_quantity', $arrProductQuantity);
     $objFormParam->setParam($arrShipmentItem);
     /*
      * 受注情報を設定
      * $arrOrderDetail と項目が重複しており, $arrOrderDetail は連想配列の値
      * が渡ってくるため, $arrOrder で上書きする.
      */
     $arrOrder = $objPurchase->getOrder($order_id);
     // 生年月日の処理
     if (!Utils::isBlank($arrOrder['order_birth'])) {
         $order_birth = substr($arrOrder['order_birth'], 0, 10);
         $arrOrderBirth = explode("-", $order_birth);
         $arrOrder['order_birth_year'] = intval($arrOrderBirth[0]);
         $arrOrder['order_birth_month'] = intval($arrOrderBirth[1]);
         $arrOrder['order_birth_day'] = intval($arrOrderBirth[2]);
     }
     $objFormParam->setParam($arrOrder);
     // ポイントを設定
     list($db_point, $rollback_point) = Application::alias('eccube.helper.db')->getRollbackPoint($order_id, $arrOrder['use_point'], $arrOrder['add_point'], $arrOrder['status']);
     $objFormParam->setValue('total_point', $db_point);
     $objFormParam->setValue('point', $rollback_point);
     if (!Utils::isBlank($objFormParam->getValue('customer_id'))) {
         $arrCustomer = Application::alias('eccube.helper.customer')->sfGetCustomerDataFromId($objFormParam->getValue('customer_id'));
         $objFormParam->setValue('customer_point', $arrCustomer['point']);
     }
 }
예제 #23
0
 /**
  * アップロードした一時ファイルを保存する.
  *
  * @param  FormParam $objFormParam FormParam インスタンス
  * @return void
  */
 public function doUploadComplete(&$objFormParam)
 {
     $objImage = new Image(DOWN_TEMP_REALDIR);
     $arrRealFileName = $objFormParam->getValue('down_realfilename');
     if (is_array($arrRealFileName)) {
         foreach ($arrRealFileName as $real_file_name) {
             $objImage->moveTempImage($real_file_name, DOWN_SAVE_REALDIR);
         }
     }
 }