$pageLink = $this->createPageLink($pageNo, self::LINK_PAGE_COUNT, $currentBaseUrl, 'selpage($1);return false;');
$this->db->getLandingPageList(self::DEFAULT_LIST_COUNT, $pageNo, array($this, 'itemListLoop'));
- if (!$this->isExistsContent) $this->tmpl->setAttribute('itemlist', 'visibility', 'hidden');// コンテンツ項目がないときは、一覧を表示しない
+ if (count($this->serialArray) == 0) $this->tmpl->setAttribute('itemlist', 'visibility', 'hidden');// コンテンツ項目がないときは、一覧を表示しない
$this->tmpl->addVar("_widget", "serial_list", implode($this->serialArray, ','));// 表示項目のシリアル番号を設定
}
$newId = $request->trimValueOf('item_id'); // 新規ランディングページID
$name = $request->trimValueOf('item_name'); // ランディングページ名
$password = $request->trimValueOf('password'); // ページ運用者用初期パスワード
+ $visible = $request->trimCheckedValueOf('item_visible'); // 公開制御
$replaceNew = false; // データを再取得するかどうか
if ($act == 'add'){ // 新規追加のとき
if ($this->getMsgCount() == 0){
$userName = $newId . self::DEFAULT_USER_NAME_SUFFIX;
+ // ランディングページのページ運用ユーザを追加
$ret = $this->_db->addNewLoginUser($userName, $newId, $password, UserInfo::USER_TYPE_MANAGER/*システム運用者*/, 1/*ログイン可能*/, null/*有効期間開始*/, null/*有効期間終了*/, $newSerial,
''/*制限ウィジェットなし*/, self::USER_TYPE_OPTION/*ページ運営者*/);
+ if ($ret){
+ // ユーザ情報取得
+ $ret = $this->_db->getLoginUserRecordBySerial($newSerial, $row);
+
+ // ランディングページ情報を新規追加
+ $ownerId = $row['lu_id'];
+ $ret= $this->db->updateLandingPage(0/*新規*/, $newId, $name, $visible, $ownerId, $newSerial);
+ }
if ($ret){ // データ追加成功のとき
$this->setMsg(self::MSG_GUIDANCE, $this->_('Item added.')); // データを追加しました
// 運用ログ出力
- $ret = $this->_mainDb->getUserBySerial($newSerial, $row, $groupRows);
- if ($ret) $loginUserId = $row['lu_id'];
- $this->gOpeLog->writeUserInfo(__METHOD__, 'ユーザ情報を追加しました。アカウント: ' . $account, 2100, 'userid=' . $loginUserId . ', username=' . $name);
+ $this->gOpeLog->writeUserInfo(__METHOD__, 'ユーザ情報を追加しました。アカウント: ' . $account, 2100, 'userid=' . $ownerId . ', username=' . $userName);
$this->serialNo = $newSerial;
$reloadData = true; // データの再読み込み
}
} else { // 初期状態
$replaceNew = true; // データを再取得
+ $visible = 1; // 公開制御
}
// 表示データ再取得
if ($replaceNew){
}
$this->tmpl->addVar("_widget", "name", $this->convertToDispString($name)); // ページ名
+ $this->tmpl->addVar("_widget", "visible", $this->convertToCheckedString($visible)); // 公開制御
}
/**
* ランディングページIDをテンプレートに設定する
*/
function itemListLoop($index, $fetchedRow, $param)
{
- $value = $this->convertToDispString($fetchedRow['mn_id']);
-
- $accessPointName = str_replace('用アクセスポイント', '', $fetchedRow['pg_name']); // アクセスポイント名
$row = array(
'index' => $index, // インデックス番号
- 'value' => $value, // ランディングページID
- 'name' => $this->convertToDispString($fetchedRow['mn_name']), // ランディングページID名
- 'access_point_name' => $this->convertToDispString($accessPointName),
- 'sort_order' => $this->convertToDispString($fetchedRow['mn_sort_order']), // ソート順
- 'ref_count' => $this->_db->getMenuIdRefCount($value) // ランディングページID使用数
+ 'id' => $this->convertToDispString($fetchedRow['lp_id']), // ランディングページID
+ 'name' => $this->convertToDispString($fetchedRow['lp_name']), // ランディングページID名
+ 'date' => $this->convertToDispDateTime($fetchedRow['lp_regist_dt'], 0/*ロングフォーマット*/, 10/*時分*/) // 作成日時
);
- $this->tmpl->addVars('id_list', $row);
- $this->tmpl->parseTemplate('id_list', 'a');
+ $this->tmpl->addVars('itemlist', $row);
+ $this->tmpl->parseTemplate('itemlist', 'a');
// 表示中項目のページサブIDを保存
- $this->serialArray[] = $value;
+ $this->serialArray[] = $fetchedRow['lp_serial'];
return true;
}
}
$queryStr .= 'AND lp_id = ? ';
return $this->isRecordExists($queryStr, array($id));
}
+ /**
+ * ランディングページ情報を更新
+ *
+ * @param string $serial シリアル番号(0のときは新規登録)
+ * @param string $id ランディングページID
+ * @param string $name 名前
+ * @param bool $visible 表示制御
+ * @param int $ownerId 所有者ID
+ * @param int $newSerial 新規シリアル番号
+ * @return true = 正常、false=異常
+ */
+ function updateLandingPage($serial, $id, $name, $visible, $ownerId, &$newSerial)
+ {
+ $now = date("Y/m/d H:i:s"); // 現在日時
+ $userId = $this->gEnv->getCurrentUserId(); // 現在のユーザ
+ $regDt = $now; // 作成日時
+
+ // トランザクション開始
+ $this->startTransaction();
+
+ // 前レコードの削除状態チェック
+ $historyIndex = 0;
+ if (empty($serial)){ // 新規登録のとき
+ $queryStr = 'SELECT * FROM _landing_page ';
+ $queryStr .= 'WHERE lp_id = ? ';
+ $queryStr .= 'ORDER BY lp_history_index DESC ';
+ $ret = $this->selectRecord($queryStr, array($id), $row);
+ if ($ret){
+ if (!$row['lp_deleted']){ // レコード存在していれば終了
+ $this->endTransaction();
+ return false;
+ }
+ $historyIndex = $row['lp_history_index'] + 1;
+ }
+ } else { // 更新のとき
+ // 指定のシリアルNoのレコードが削除状態でないかチェック
+ $queryStr = 'SELECT * FROM _landing_page ';
+ $queryStr .= 'WHERE lp_serial = ? ';
+ $ret = $this->selectRecord($queryStr, array(intval($serial)), $row);
+ if ($ret){ // 既に登録レコードがあるとき
+ if ($row['lp_deleted']){ // レコードが削除されていれば終了
+ $this->endTransaction();
+ return false;
+ }
+ $historyIndex = $row['lp_history_index'] + 1;
+
+ // 識別ID,ページ所有者,作成日時は変更不可
+ $id = $row['lp_id'];
+ $ownerId = $row['lp_owner_id'];
+ $regDt = $row['lp_regist_dt']; // 作成日時
+ } else { // 存在しない場合は終了
+ $this->endTransaction();
+ return false;
+ }
+
+ // 古いレコードを削除
+ $queryStr = 'UPDATE _landing_page ';
+ $queryStr .= 'SET lp_deleted = true, '; // 削除
+ $queryStr .= 'lp_update_user_id = ?, ';
+ $queryStr .= 'lp_update_dt = ? ';
+ $queryStr .= 'WHERE lp_serial = ?';
+ $ret = $this->execStatement($queryStr, array($userId, $now, intval($serial)));
+ if (!$ret){
+ $this->endTransaction();
+ return false;
+ }
+ }
+
+ // データを追加
+ $queryStr = 'INSERT INTO _landing_page ';
+ $queryStr .= '(lp_id, lp_history_index, lp_name, lp_visible, lp_owner_id, lp_regist_dt, lp_create_user_id, lp_create_dt) ';
+ $queryStr .= 'VALUES ';
+ $queryStr .= '(?, ?, ?, ?, ?, ?, ?, ?)';
+ $this->execStatement($queryStr, array($id, $historyIndex, $name, intval($visible), intval($ownerId), $regDt, $userId, $now));
+
+ // 新規のシリアル番号取得
+ $queryStr = 'SELECT MAX(lp_serial) AS ns FROM _landing_page ';
+ $ret = $this->selectRecord($queryStr, array(), $row);
+ if ($ret) $newSerial = $row['ns'];
+
+ // トランザクション確定
+ $ret = $this->endTransaction();
+ return $ret;
+ }
+ /**
+ * ランディングページ情報の削除
+ *
+ * @param array $serial シリアルNo
+ * @return true=成功、false=失敗
+ */
+ function delLandingPage($serial)
+ {
+ $now = date("Y/m/d H:i:s"); // 現在日時
+ $user = $this->gEnv->getCurrentUserId(); // 現在のユーザ
+
+ if (!is_array($serial) || count($serial) <= 0) return true;
+
+ // トランザクション開始
+ $this->startTransaction();
+
+ // 指定のシリアルNoのレコードが削除状態でないかチェック
+ for ($i = 0; $i < count($serial); $i++){
+ $queryStr = 'SELECT * FROM _landing_page ';
+ $queryStr .= 'WHERE lp_deleted = false '; // 未削除
+ $queryStr .= 'AND lp_serial = ? ';
+ $ret = $this->isRecordExists($queryStr, array($serial[$i]));
+ // 存在しない場合は、既に削除されたとして終了
+ if (!$ret){
+ $this->endTransaction();
+ return false;
+ }
+ }
+
+ // レコードを削除
+ $queryStr = 'UPDATE _landing_page ';
+ $queryStr .= 'SET lp_deleted = true, '; // 削除
+ $queryStr .= 'lp_update_user_id = ?, ';
+ $queryStr .= 'lp_update_dt = ? ';
+ $queryStr .= 'WHERE lp_serial in (' . implode($serial, ',') . ') ';
+ $this->execStatement($queryStr, array($user, $now));
+
+ // トランザクション確定
+ $ret = $this->endTransaction();
+ return $ret;
+ }
}
?>