ソロツーリングと気ままな旅ホームソロツーリングと気ままな旅  >  旅と気ままなフォーラム  >  XOOPS、パソコン関連  >  XOOPS関連フォーラム  >  Xoops Cube Legacyをphp7で運用する方法を模索

Xoops Cube Legacyをphp7で運用する方法を模索

  • ここでは新たな話題の追加投稿はできません。
  • ここではゲスト投稿が禁止されています

投稿ツリー




前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 .3 .4 .5 .6 .7 | 投稿日時 2022/9/14 5:12 | 最終変更
タツ  管理人   投稿数: 2255
現在、サイトの運用にXoops Cube Legacyを利用しています。残念ながらphp7バージョンでは動作しません。昨年、レンタルサーバーのphpバージョンが最低でもphp5.3となり、今の所どうにか維持している状態ですが、このままでは使えなくなる公算が高いと思われます。

そんな中で、レンタルサーバーに問い合わせてみたところ。XoopsXを使ってみてはという意見を頂きました。

これを受け、ローカル環境(xampp7.4.25)でインストールを試してみました。

まず、最新のXoopsX(legacy-pilot)をダウンロードし、インストールするも最後のログインができず管理画面に入ることすらできず利用することができませんでした。何かうまくインストールする方法があるのかも知れませんが全く分かりません。

次にphp7で動作するという xoopscube/legacy(legacy-2.3)を見つけダウンロードし、インストールするとすんなりとインストールができました。

引用:
これであれば利用できそうです。ところが、管理画面が携帯を意識した仕様で非常に見にくくとてもパソコンでは使えそうにありません。これではかなり管理しずらいので、

legacy-2.3のhtml/modules/legacyモジュールを削除し、XoopsX(legacy-pilot)のhtml/modules/legacyモジュールに入れ替えてみました。すると従来の管理画面が適用され見易くなりました。あとはアイコンにSVG画像が多用されていてこれも非常に見にくいので各モジュールのxoopsversionのアイコン設定を以前のpng画像に変更しました。

各モジュールのxoopsversion設定カ所
$modversion['image'] = ○○.png 
に変更

あと、管理画面で登録ユーザー、ゲスト、もっと...の小さなアイコンがアイコンが表示されていないのが分かりlegacy-2.3のhtml/modules/legacy/admin/theme/icons/ 内のsvg画像を同じ場所にコピーし表示することができました。

というようにしてしてみたものの、管理画面に不具合が生じたり、モジュールをインストールする度に色々とエラーが出るのでオリジナルのまま利用することにしました。

ここから各モジュールが対応するかどうか1つずつ自身の備忘録として記録していきたいと思います。

最近ではXoops Cube Legacyのダウンロードサイト、記事もめっきり少なくなりなかなかトラブルの際に苦慮しているのが現状です。このままだと無くなってしまうかもしれませんね。
投票数:4 平均点:5.00

前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2022/9/14 11:44 | 最終変更
タツ  管理人   投稿数: 2255
Xoops Cube Legacyサイト構築の際、重要な部分の1つにデータベースのエクスポートとインポートがあります。これにはサーバーのPhpMyAdminを利用するのも1つの方法ですが複数あったほうが安心なのは言うまでもありません。というのもPhpMyAdminは時間が掛かったり、エラーが発生したりと利用できなくなることがあったからです。BigDumpというソフトがとても便利でしたが、残念ながら今の所php7では動作しません。

従って、このモジュールはデータベースを扱う上で必要なモジュールだと考えています。そのままではphp7では動作しないので編集してみました。なお、この方法での細かなミスがあったので2022/09/16に再度編集し、ローカル環境(サーバーxampp7.4.25、legacy-2.3を起用)での動作を再確認したものです。

参考サイト
MySQL関数からMySQLi関数への移行作業メモ
myx_backup Ver 1.10のPHP7対応
myx_backupダウンロード

■1.PHP7で利用できない関数のコメントアウト
set_magic_quotes_runtime→PHP7で削除されました。
get_magic_quotes_runtime→php7では非推奨
これらが含まれているコード行はコメントアウトし削除修正しましたが問題なく動作するようです。

変更対象ファイルは
modules/myx_backup/admin/backup_bymod.php
modules/myx_backup/admin/backup.php
modules/myx_backup/admin/dump.php
modules/myx_backup/admin/restore.php

ファイル内の以下のコード行をコメントアウトします
$mqr = get_magic_quotes_runtime();
set_magic_quotes_runtime(0);
set_magic_quotes_runtime($mqr);
↓コメントアウト
//$mqr = get_magic_quotes_runtime();
//set_magic_quotes_runtime(0);
//set_magic_quotes_runtime($mqr);

■2.PHP7での配列書式変更
変更対象ファイル
array()は殆どのファイルにて多数存在するので省略します
$name = array() 
変更↓
$name = [];

■3.mysqlfetchfield_change.phpの追加
mysql_fetch_fieldのphp5からphp7への互換性を維持するためmodules/myx_backup/admin/mysqlfetchfield_change.phpを追加しました。
このファイルの追加対象ファイルは
modules/myx_backup/admin/function.php
modules/myx_backup/admin/export.php

mysqlfetchfield_change.phpコード内容
<?php
/**
 * MySQL関数からMySQLi関数への移行作業メモ(https://qiita.com/from_kyushu/items/0023a2b0816f82e1740f)より引用
 * php7のmysqli_fetch_field_direct() を mysql_fetch_field() の代替とするための処理プログラム
 * mysql_fetch_field() は型情報を文字列として持っているが mysqli_fetch_field_direct() はビット情報を整数として持っている
 *
 * MYSQLI_*_FLAG定数を読み込みビットフラグ整数と名称の配列を生成する。
 * 引数に true を渡すと旧MySQL関数互換の配列を返す。
 *
 * @param bool MySQL関数互換フラグ
 * @return array
 */
function get_flag_names($compat = false){
	if($compat){
	  return [
		1 => "not_null",
		2 => "primary_key",
		4 => "unique_key",
		8 => "multiple_key",
		16 => "blob",
		32 => "unsigned",
		64 => "zerofill",
		128 => "binary",
		256 => "blob",
		512 => "auto_increment",
		1024 => "timestamp"
	  ];
	} else {
	  $flags = [];
	  $constants = get_defined_constants(true);
	  foreach ($constants['mysqli'] as $c => $n){
		if (preg_match('/MYSQLI_(.*)_FLAG$/', $c, $m)){
		  if (!array_key_exists($n, $flags)){
			$flags[$n] = strtolower($m[1]);
		  }
		}
	  }
	  return $flags;
	}
  }
  
  /**
   * MYSQLI_TYPE_*定数を読み込みビットフラグ整数と名称の配列を生成する。
   * 引数に true を渡すと旧MySQL関数互換の配列を返す。
   *
   * @param bool MySQL関数互換フラグ
   * @return array
   */
  function get_type_names($compat = false){
	$types = [];
	$constants = get_defined_constants(true);
	foreach ($constants['mysqli'] as $c => $n){
	  if (preg_match('/MYSQLI_TYPE_(.*)$/', $c, $m)){
		$types[$n] = strtolower($m[1]);
	  }
	}
	// MySQL関数互換モードの場合、MySQL関数が返す値で置き換える
	if($compat){
	  $types[0] = "real";
	  $types[1] = "char";
	  $types[2] = "int";
	  $types[3] = "int";
	  $types[4] = "real";
	  $types[5] = "real";
	  $types[8] = "int";
	  $types[9] = "int";
	  $types[248] = "string";
	  $types[249] = "blob";
	  $types[250] = "blob";
	  $types[251] = "blob";
	  $types[253] = "string";
	}
	return $types;
  }
  
  /**
   * mysqli_fetch_field()等で取得したstdClassオブジェクトをmysql_fetch_field()互換の形式で作り直す。
   *
   * @param object mysqli_fetch_field()等で取得したstdClassオブジェクト
   * @param bool MySQL関数互換フラグ
   * @return object
   */
  function remake_field_object($field, $compat = true){
	$obj = new stdClass();
	$flags = get_flag_names($compat);
	$types = get_type_names($compat);
	$numeric_types = [1, 2, 3, 4, 5, 8, 9, 16, 246];
	$compat_flags  = ["not_null", "primary_key", "unique_key", "multiple_key", "blob", "unsigned", "zerofill"];
	$nocompat_keys = ["orgname", "orgtable", "db", "catalog", "length", "charsetnr", "decimals"];
	$compat_sortkey = ["name", "table", "def", "max_length", "not_null", "primary_key", "multiple_key", "unique_key", "numeric", "blob", "type", "unsigned", "zerofill"];
	foreach((array) $field as $key => $value){
	  switch($key){
	  case "flags":
		foreach($flags as $num => $name){
		  // MySQL関数互換モードの場合、mysql_fetch_field() の返り値にないプロパティは飛ばす
		  if($compat == true && ! in_array($name, $compat_flags)) continue;
		  $obj->$name = ($value & $num) ? 1 : 0;
		}
		break;
	  case "type":
		$obj->type = $types[$value];
		// $obj->numericはflagsの中には含まれていないため、typeを見て判断する
		$obj->numeric = (in_array($value, $numeric_types)) ? 1 : 0;
		// TEXT型の場合、typeはblobとなるがflagsではblobとして扱われないためここでフラグを立てる
		if($obj->type == "blob") $obj->blob = 1;
		break;
	  default:
		// MySQL関数互換モードの場合、mysql_fetch_field() の返り値にないプロパティは飛ばす
		if($compat == true && in_array($key, $nocompat_keys)) break;//php7.4に合わせcontinue;→break;に変更
		$obj->$key = $value;
		break;
	  }
	}
	// オブジェクトを配列にキャストして処理する場合、キャスト後の配列の順序はプロパティ定義順となる。
	// そのため、MySQL関数互換モードの場合MySQL関数と同一の定義順に並び替える。
	if($compat == true){
	  $sorted = new stdClass();
	  foreach($compat_sortkey as $key){
		$sorted->$key = $obj->$key;
	  }
	  $obj = $sorted;
	}
	return $obj;
  }
  
?>

■4.mysqlからmysqliへの関数コード変更
mysqliコードへの変更対象ファイルは
modules/myx_backup/admin/function.php
modules/myx_backup/admin/export.php
です。
変更内容は
mysql_num_fields();
mysql_field_name();
mysql_fetch_field();
mysql_field_flags();
それぞれ変更↓
mysqli_num_fields(); //変更
mysqli_fetch_field_direct() ->name;//変更
remake_field_object(); //変更
mysqli_fetch_field_direct() ->flags;//変更

■5.テーブル名を比較する際に{prefix}{dirname}がそのまま表示される件の対処
なぜかテーブル名が{prefix}{dirname}がそのまま表示され、うまく取得できないままテーブル名を比較し違うものと判断されています。str_replace関数を使って{prefix}は削除、{dirname}はモジュール名に変換することにしました。プロのプログラマーであれば他の方法があるかもしれません。
変更対象ファイルは
modules/myx_backup/admin/function.php
modules/myx_backup/admin/backup_bymod.php

■6.zipのダウンロードが破損されているとのエラーメッセージが出る件
html/class/class.zipfile.phpの編集が必要です。
eval('$hexdtime = \'' . $hexdtime . '\';'); 
変更→eval('$hexdtime = "' . $hexdtime . '";');

-----------------------

次に上記を元にして実際のコード変更を編集します
modules/myx_backup/admin/function.phpの編集
4行目に追加
<?php
if (!defined('XOOPS_ROOT_PATH')) { exit(); }
if (!defined('MYXBU_SQLComment')) { exit(); }
require_once './mysqlfetchfield_change.php';//追加

・mysqlからmysqliへの関数コード変更26行目あたり
for ($i = 0; $i < mysqli_num_fields($res3); $i++) { //変更
		$fname = mysqli_fetch_field_direct($res3, $i) ->name; //変更
		$fmeta[$fname] = remake_field_object($res3, $i);//変更
		$fflag[$fname] = mysqli_fetch_field_direct($res3, $i) ->flags; //変更

・正しいテーブル名の取得112行目辺り
if (isset($modversion['tables'])) {
	foreach ($modversion['tables'] as $table) {
		if ($table != '') {
			$before_table_name = ['{prefix}_', '{dirname}']; //追加
			$after_table_name   = ['', $dname];//追加
			$table2  = str_replace($before_table_name, $after_table_name, $table);//追加
			$ModuleTables[$xoopsDB->prefix($table2)] = htmlspecialchars($dname);//変更
			$ModuleByDir[$xoopsDB->prefix($table2)] = false;//変更
		}
	}
}


modules/myx_backup/admin/export.phpの編集
4行目に追加
<?php
require_once '../../../include/cp_header.php';
require_once './header.php';
require_once './mysqlfetchfield_change.php';//追加。

21行目辺りから
if ($op == 'export') {
	//	Export Main
	$result = '';
	$res = $xoopsDB->query("SELECT * FROM `$table_name` LIMIT 0");
	$fnum = mysqli_num_fields($res); //変更
	$comma = '';

	for ($i = 0; $i < $fnum; $i++) {
		$fname[$i] = mysqli_fetch_field_direct($res, $i) ->name;  //変更
		$fmeta[$i] = remake_field_object($res, $i); 		  //変更
		$fflag[$i] = mysqli_fetch_field_direct($res, $i) ->flags; //変更
		$result .= $comma.'"'.str_replace('"', '""', $fname[$i]).'"';
		$comma = ', ';

	}


modules/myx_backup/admin/backup_bymod.phpの編集
・不要関数のコメントアウト
//$mqr = get_magic_quotes_runtime(); 68行目
//set_magic_quotes_runtime(0);69行目
//set_magic_quotes_runtime($mqr);81行目

・正しいテーブル名の取得41行目あたり
foreach ($table2module as $tbl => $mod) {
	if ($mod_name == $mod) {
		$before_mod_name = ['_{prefix}', '{dirname}']; //追加
		$after_mod_name   = ['', $mod_name];//追加
		$tbl_change  = str_replace($before_mod_name, $after_mod_name, $tbl);//追加
		$my_tables[$tables_count++] = $tbl_change;//変更
	}
}

modules/myx_backup/admin/backup.phpの編集
・不要関数のコメントアウト
//$mqr = get_magic_quotes_runtime(); 33行目
//set_magic_quotes_runtime(0);34行目
//set_magic_quotes_runtime($mqr);53行目


modules/myx_backup/admin/dump.phpの編集
・不要関数のコメントアウト
//$mqr = get_magic_quotes_runtime(); 36行目
//set_magic_quotes_runtime(0);37行目
//set_magic_quotes_runtime($mqr);58行目

modules/myx_backup/admin/restore.phpの編集
・不要関数のコメントアウト
//$mqr = get_magic_quotes_runtime(); 49行目
//set_magic_quotes_runtime(0);50行目
//set_magic_quotes_runtime($mqr);118行目


html/class/class.zipfileの編集
・圧縮エラー回避93行目
eval('$hexdtime = \'' . $hexdtime . '\';');
変更↓	
eval('$hexdtime = "' . $hexdtime . '";');//変更

以上の編集で今の所正常に機能しているようです。
但し、最適化については時間が掛かりステータスに「note -- Table does not support optimize, doing recreate + analyze instead」と表示されています。この部分の解消方法についてはよくわかりません。
投票数:4 平均点:5.00

前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2022/9/14 12:25
nonn50  一人前   投稿数: 80
それは大変な工事を始めましたね。
私は2010年以前にはTOK2有料サーバーでCube Legacyを利用していました。
2011年に石川県に転居した際にXoopsから遠のいたのですが、2015年に暇なので再度首を突っ込みました。
その際にサーバを変えたためPHP7を利用できるようになりました。
また、既にXOOPS X (Ten)の時代になっていたため、文字コードを変換+PHPをアップ+Xoopsの切替工事を行いました。
健在XOOPS X (Ten) · GitHubで配布されている物との差異は判りません。しかし、モジュール名で見る限りは、当時「Cube Legacy⇒XOOPS X」に移行させたものと変わりません。
話が長くなりましたが、要するに「殊更の事はしなくとも動きました」。
ちなみに「gnavi」は貴兄が手を加えた物を利用していました。
頑張ってください。
投票数:5 平均点:6.00

前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2022/9/14 15:58
タツ  管理人   投稿数: 2255
nonnさん、いつも返信ありがとうございます。そうなんですね。今更ですが、php7のローカル環境でXOOPS X (Ten)をインストールしようとするとインストールが終了してから再ログインの時に全くログインができなくなってしまう現象が発生して諦めました。再インストールではなくそのままバージョンアップを重ねた場合はphp7でも稼働するのかも知れませんね。能力はなくても時間はありますのでちびちびと色々試してみたいと思います。
投票数:6 平均点:5.00

前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2022/9/24 8:28 | 最終変更
タツ  管理人   投稿数: 2255
このサイトもmultiMenuモジュールを利用しています。さて、XoopsXより最新のmultiMenuモジュールversion1.24をローカル環境(サーバーxampp7.4.25、legacy-2.3を起用)に各ファイルを以下のように編集してみました。

インストールしてみるとメニューのブロック管理でグループ管理が表示されないので、以前のバージョン1.20を編集しインストールしてみましたが、グループ管理は表示されるもののaltsysのグループ管理とは整合性がなかったのでこのversion1.24を採用することにしました。version1.20の編集も参考に掲載することにしました。

■1.PHP7へのバージョンアップによる書式変更(__construct部分)
・modules/multiMenu/class/menu.php 26行目
parent::XoopsObjectGenericHandler($db);
変更↓
parent::__construct($db);  //変更

・modules/multiMenu/include/gtickets.php 13行目
function XoopsGTicket()
変更↓
function __construct()//変更

・modules/multiMenu/admin/mygrouppermform.php
79行目
function MyXoopsGroupPermForm($title, $modid, $permname, $permdesc)
変更↓
function __construct($title, $modid, $permname, $permdesc)  //変更

241行目  
function MyXoopsGroupFormCheckBox($caption, $name, $groupId, $values = null)
変更↓
function __construct($caption, $name, $groupId, $values = null)  //変更

・html/preload/multiMenuPreload.class.php 49行目
function multiMenuFlow($gmm){
変更↓
function __construct($gmm){  //変更

■2.PHP7へのバージョンアップによる書式変更
・modules/multiMenu/admin/myblocksadmin.php 34行目
// get blocks owned by the module
$block_arr =& XoopsBlock::getByModule( $xoopsModule->mid() ) ;
変更↓
// get blocks owned by the module
$blockmodel = new XoopsBlock();    //追加
$block_arr =& $blockmodel -> getByModule( $xoopsModule->mid() ) ;  //変更

■3.その他PHP7での配列書式変更
変更対象ファイル
array()は殆どのファイルにて多数存在するので省略します
例)$name = array() 
変更↓
$name = [];

version1.24の編集はここまでです。


----------
※以下は参考です。(multiMenuモジュールversion1.20のphp7への編集)

■1.PHP7バージョンアップによるeregi()→preg_match()へ書式変更とパターン前後にスラッシュを追加
・multiMenu/blocks\multimenu.php
109行目
if (eregi("^\[([a-z0-9_\-]+)\]((.)*)$", $link, $moduledir)) {
変更↓
if (preg_match("/^\[([a-z0-9_\-]+)\]((.)*)$/", $link, $moduledir)) {

126行目
if (eregi("^\[([a-z0-9_\-]+)\]((.)*)$", $myrow['link'], $moduledir)) {
変更↓
if (preg_match("/^\[([a-z0-9_\-]+)\]((.)*)$/", $myrow['link'], $moduledir)) {

135行目
}elseif (eregi("^\+\[([a-z0-9_\-]+)\]((.)*)$", $myrow['link'], $moduledir)) 
変更↓
}elseif (preg_match("/^\+\[([a-z0-9_\-]+)\]((.)*)$/", $myrow['link'], $moduledir)) 

157行目
{preg_match("^\@\[([a-z0-9_\-]+)\]((.)*)$", $myrow['link'], $moduledir)) {
変更↓
{preg_match("/^\@\[([a-z0-9_\-]+)\]((.)*)$/", $myrow['link'], $moduledir)) {

186行目
} elseif (eregi("^\&\[([a-z0-9_\-]+)\]((.)*)$", $myrow['link'], $moduledir)) 
変更↓
} elseif (preg_match("/^\&\[([a-z0-9_\-]+)\]((.)*)$/", $myrow['link'], $moduledir)) 

■2.PHP7へのバージョンアップによる書式変更(__construct部分)
・multiMenu\admin\mygrouppermform.php
81行目
function MyXoopsGroupPermForm($title, $modid, $permname, $permdesc)
変更↓
function __construct($title, $modid, $permname, $permdesc)

244行目
function MyXoopsGroupFormCheckBox($caption, $name, $groupId, $values = null)
変更↓
function __construct($caption, $name, $groupId, $values = null)

・multiMenu/class/menu.php 24行目
parent::XoopsObjectGenericHandler($db);
変更↓
parent::__construct($db);

■3.MySQLのバージョンアップによる書式変更
・multiMenu\sql/mysql.sql
TYPE=MyISAM; → ENGINE=MyISAM;

■4.PHP7へのバージョンアップによる書式変更
modules/multiMenu/admin/myblocksadmin.php 34行目
// get blocks owned by the module
$block_arr =& XoopsBlock::getByModule( $xoopsModule->mid() ) ;
変更↓
// get blocks owned by the module
$blockmodel = new XoopsBlock();    //追加
$block_arr =& $blockmodel -> getByModule( $xoopsModule->mid() ) ;  //変更

■5.その他PHP7へのバージョンアップによる配列書式変更
array() → []
array()は多くのファイルにて多数存在するので省略します
例)$name = array() 
変更↓
$name = [];
投票数:2 平均点:10.00

前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2022/9/27 20:49 | 最終変更
タツ  管理人   投稿数: 2255
xoopsを利用する1つの理由は旅行サイトとしてこのGnaviモジュールを利用することができるからです。さて、他に編集したモジュールと同じくXoopsXより最新のGnaviモジュール(gnavi-master)version1.06をダウンロードし、同じくローカル環境(サーバーxampp7.4.25、legacy-2.3を起用)でインストールし、エラーが出るかどうかのチェックをしました。以下の部分を編集することでエラーは今の所解消されています。ただし、実際の運用上の不具合については未確認です。

■PHP7へのバージョンアップによる書式変更エラー
Warning [Xoops]: Smarty error: unable to read resource: "db:altsys_inc_mymenu.html" in file C:\xampp/htdocs/xoops_trust_path/libs/smarty/Smarty.class.php line 1108 (1)
このエラーはよくわからなかったのですが、モジュール管理メニューにaltsysを結合する際にaltsysのメニューが正しく取得できなかったことが原因のようです。Picoモジュールが標準でインストールされ、エラーもなかったので
xoops_trust_path/modules/pico/admin/mymenuをそのまま
xoops_trust_path/modules/gnavi/admin/mymenuに転用することで解消しました。
ただし、メニューが重複する部分があったので不要な部分をコメントアウトしました。

・xoops_trust_path/modules/gnavi/admin/mymenu.php(Picoモジュール内のmymenu.phpを転用後編集) 
40行目~57行目までコメントアウト
/**
if ( file_exists( XOOPS_TRUST_PATH . '/libs/altsys/myblocksadmin.php' ) ) {

	$title = defined( '_MD_A_MYMENU_MYBLOCKSADMIN' ) ? _MD_A_MYMENU_MYBLOCKSADMIN : 'blocksadmin';

	$adminmenu[] = [ 'title' => $title, 'link' => 'admin/index.php?mode=admin&lib=altsys&page=myblocksadmin' ];
}

// Preferences
$config_handler =& xoops_gethandler( 'config' );
if ( count( $config_handler->getConfigs( new Criteria( 'conf_modid', $xoopsModule->mid() ) ) ) > 0 ) {
	$adminmenu[] = [
		'title' => _PREFERENCES,
		'link'  => XOOPS_URL . '/modules/legacy/admin/index.php?action=PreferenceEdit&confmod_id=' . $xoopsModule->mid()
	];
}
*/


■1.PHP7へのバージョンアップによる書式変更(__construct部分)
・xoops_trust_path/modules/gnavi/class/gtickets.php
13行目
function XoopsGTicket()
変更↓
function __construct()

・xoops_trust_path/modules/gnavi/admin/mygrouppermform.php
79行目
function MyXoopsGroupPermForm($title, $modid, $permname, $permdesc)
変更↓
function __construct($title, $modid, $permname, $permdesc)

246行目function MyXoopsGroupFormCheckBox($caption, $name, $groupId, $values = null)
変更↓
function __construct($caption, $name, $groupId, $values = null)


・xoops_trust_path/modules/gnavi/class/gnavi.textsanitizer.php
22行目
function GNaviTextSanitizer()
変更↓
function __construct()

24行目
parent::MyTextSanitizer() ;
変更↓
parent:: __construct() ;

■2.PHP7へのバージョンアップによる書式変更
・xoops_trust_path/modules/gnavi/class/myuploader.php
100行目
function MyXoopsMediaUploader($uploadDir, $allowedMimeTypes, $maxFileSize, $maxWidth=null, $maxHeight=null, $allowedExtensions=null )
変更↓
function __construct($uploadDir, $allowedMimeTypes, $maxFileSize, $maxWidth=null, $maxHeight=null, $allowedExtensions=null )

■3.スコープの書式変更
・xoops_trust_path/modules/gnavi/class/gnavi.textsanitizer.php
43行目
function &getInstance() {
変更↓
public static function &getInstance() {

■4.インストール時の上書き禁止ファイル
以下のファイルが梱包されているが既にlegacy-2.3にて標準装備されているため上書きはしないようにすること
・xoops_trust_path/libs/smarty/plugins/function.d3comment.php

■5.その他PHP7での配列書式変更
変更対象ファイル
array()は殆どのファイルにて多数存在するので省略します
例)$name = array() 
変更↓
$name = [];

以上です。今の所、管理画面ではエラーは解消しています。最初にも記述しましたが、今の所エラーは解消されていますが、実際の運用をしていないので解消可能かどうかも含め、変更などあれば追加編集したいと思います。
投票数:0 平均点:0.00

前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2022/9/28 6:09 | 最終変更
タツ  管理人   投稿数: 2255
他に編集したモジュールと同様、XoopsXより最新のd3pipesモジュール(d3pipes-master)version0.70をダウンロードし、ローカル環境(サーバーxampp7.4.25、legacy-2.3を起用)でインストールし、エラーが出るかどうかのチェックをしました。以下の部分を編集することでエラーは今の所解消されています。ただし、実際の運用上の不具合については未確認です。

■1.PHP7へのバージョンアップによる書式変更(__construct部分)
xoops_trust_path/modules/d3pipes/class/gtickets.php
13行目
function XoopsGTicket()
変更↓
function __construct()

・xoops_trust_path/modules/d3pipes/joints/D3pipesBlockAbstract.class.php
17行目
function D3pipesBlockAbstract( $mydirname , $pipe_id , $option )
変更↓
function __construct( $mydirname , $pipe_id , $option )

■2.PHP7へのバージョンアップによる書式変更(create_functionの部分)
・xoops_trust_path/modules/d3pipes/include/admin_functions.php
36行目
uksort( $ret , create_function( '$a,$b' , 'return @$GLOBALS["joint_type_weights"][$a] > @$GLOBALS["joint_type_weights"][$b] ; ' ) ) ;
変更↓
uksort( $ret , function($a,$b) {return @$GLOBALS["joint_type_weights"][$a] > @$GLOBALS['joint_type_weights'][$b] ;} ) ;

■3.PHP7へのバージョンアップによる書式変更エラー
Warning [Xoops]: Smarty error: unable to read resource: "db:altsys_inc_mymenu.html" in file C:\xampp/htdocs/xoops_trust_path/libs/smarty/Smarty.class.php line 1108 (1)
Gnaviモジュールをインストールした際に同様のエラーが表示されていたので(原因は、モジュール管理メニューにaltsysを結合する際にaltsysのメニューが正しく取得できなかったことが原因のようです)、同様に
xoops_trust_path/modules/pico/admin/mymenuをそのまま
xoops_trust_path/modules/d3pipes/admin/mymenuに転用することで解消しました。
ただし、メニューが重複する部分があったので不要な部分をコメントアウトしました。

・xoops_trust_path/modules/d3pipes/admin/mymenu.php(Picoモジュール内のmymenu.phpを転用後編集) 
40行目~57行目までコメントアウト
/**
if ( file_exists( XOOPS_TRUST_PATH . '/libs/altsys/myblocksadmin.php' ) ) {

	$title = defined( '_MD_A_MYMENU_MYBLOCKSADMIN' ) ? _MD_A_MYMENU_MYBLOCKSADMIN : 'blocksadmin';

	$adminmenu[] = [ 'title' => $title, 'link' => 'admin/index.php?mode=admin&lib=altsys&page=myblocksadmin' ];
}

// Preferences
$config_handler =& xoops_gethandler( 'config' );
if ( count( $config_handler->getConfigs( new Criteria( 'conf_modid', $xoopsModule->mid() ) ) ) > 0 ) {
	$adminmenu[] = [
		'title' => _PREFERENCES,
		'link'  => XOOPS_URL . '/modules/legacy/admin/index.php?action=PreferenceEdit&confmod_id=' . $xoopsModule->mid()
	];
}
*/

■■4.インストール時の上書き禁止ファイル
以下のファイルが梱包されているが既にlegacy-2.3にて標準装備されているため上書きはしないようにすること
・xoops_trust_path/libs/smarty/plugins/function.d3comment.php

■5.その他PHP7での配列書式変更
変更対象ファイル
array()は殆どのファイルにて多数存在するので省略します
例)$name = array() 
変更↓
$name = [];

以上です。今の所、管理画面ではエラーは解消しています。最初にも記述しましたが、今の所エラーは解消されていますが、実際の運用をしていないので稼働可能かどうかも含め、変更などあれば追加編集したいと思います。
投票数:0 平均点:0.00

前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2022/9/29 8:25 | 最終変更
タツ  管理人   投稿数: 2255
続いて、bulletinモジュールphp7への対応です。他に編集したモジュールと同様、XoopsXより最新のd3pipesモジュール(bulletin-master)version3.03をダウンロードし、ローカル環境(サーバーxampp7.4.25、legacy-2.3を起用)でインストールし、エラーが出るかどうかのチェックをしました。以下の部分を編集することでエラーは今の所解消されています。ただし、実際の運用上の不具合については未確認です。

■1.PHP7へのバージョンアップによる書式変更(__construct部分)
・xoops_trust_path/modules/bulletin/class/bulletin.php
19行目
function Bulletin( $mydirname , $id=null )
変更↓
function __construct( $mydirname , $id=null )

・xoops_trust_path/modules/bulletin/class/relation.php
11行目
function relation($mydirname='')
変更↓
function __construct($mydirname='')

・xoops_trust_path/modules/bulletin/class/bulletinTopic.php
8行目
function BulletinTopic( $mydirname , $topicid=0 )
変更↓
function __construct( $mydirname , $topicid=0 )

・xoops_trust_path/modules/bulletin/class/bulletingp.php
8行目
function BulletinGP($mydirname){
変更↓
function __construct($mydirname){

24行目
$instance->BulletinGP($mydirname);
変更↓
$instance->__construct($mydirname);

・xoops_trust_path/modules/bulletin/include/gtickets.php
13行目
function XoopsGTicket()
変更↓
function __construct()

■2.PHP7へのバージョンアップによる書式変更エラー
Warning [Xoops]: Smarty error: unable to read resource: "db:altsys_inc_mymenu.html" in file C:\xampp/htdocs/xoops_trust_path/libs/smarty/Smarty.class.php line 1108 (1)
Gnaviモジュールをインストールした際に同様のエラーが表示されていたので(原因は、モジュール管理メニューにaltsysを結合する際にaltsysのメニューが正しく取得できなかったことが原因のようです)、同様に
xoops_trust_path/modules/pico/admin/mymenuをそのまま
xoops_trust_path/modules/bulletin/admin/mymenuに転用することで解消しました。
ただし、メニューが重複する部分があったので不要な部分をコメントアウトしました。

・xoops_trust_path/modules/bulletin/admin/mymenu.php(Picoモジュール内のmymenu.phpを転用後編集) 
40行目~57行目までコメントアウト
/**
if ( file_exists( XOOPS_TRUST_PATH . '/libs/altsys/myblocksadmin.php' ) ) {

	$title = defined( '_MD_A_MYMENU_MYBLOCKSADMIN' ) ? _MD_A_MYMENU_MYBLOCKSADMIN : 'blocksadmin';

	$adminmenu[] = [ 'title' => $title, 'link' => 'admin/index.php?mode=admin&lib=altsys&page=myblocksadmin' ];
}

// Preferences
$config_handler =& xoops_gethandler( 'config' );
if ( count( $config_handler->getConfigs( new Criteria( 'conf_modid', $xoopsModule->mid() ) ) ) > 0 ) {
	$adminmenu[] = [
		'title' => _PREFERENCES,
		'link'  => XOOPS_URL . '/modules/legacy/admin/index.php?action=PreferenceEdit&confmod_id=' . $xoopsModule->mid()
	];
}
*/

■3.インストール時の上書き禁止ファイル
以下のファイルが梱包されているが既にlegacy-2.3にて標準装備されているため上書きはしないようにすること
・xoops_trust_path/libs/smarty/plugins/function.d3comment.php
・xoops_trust_path/libs/smarty/plugins/function.xoopsdhtmltarea.php

■4.その他PHP7での配列書式変更
変更対象ファイル
array()は殆どのファイルにて多数存在するので省略します
例)$name = array() 
変更↓
$name = [];

以上です。今の所、管理画面ではエラーは解消しています。最初にも記述しましたが、今の所エラーは解消されていますが、実際の運用をしていないので稼働可能かどうかも含め、変更などあれば追加編集したいと思います。
投票数:2 平均点:5.00

前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2022/10/1 7:39
タツ  管理人   投稿数: 2255
続いて、myalbum-pモジュールphp7への対応です。他に編集したモジュールと同様、XoopsXより最新のmyalbum-pモジュール(myalbum-p-master)version2.89をダウンロードし、ローカル環境(サーバーxampp7.4.25、legacy-2.3を起用)でインストールし、エラーが出るかどうかのチェックをしました。以下の部分を編集することでエラーは今の所解消されています。また、稼働するかどうか怪しかったのでデータベースも移行してテストしてみました。今の所うまく稼働しています。

■1.PHP7へのバージョンアップによる書式変更(__construct部分等)
・myalbum/include/gtickets.php
13行目
function XoopsGTicket()
変更↓
function __construct()

・myalbum/class/myalbum.textsanitizer.php
22行目
function MyAlbumTextSanitizer()
変更↓
function __construct()

24行目
parent::MyTextSanitizer() ;
変更↓
parent::__construct() ;

43行目
function &getInstance()
変更↓
public static function &getInstance()


・myalbum/include/gtickets.php
13行目
function XoopsGTicket()
変更↓
function __construct()

・myalbum/admin/mygrouppermform.php
81行目
function MyXoopsGroupPermForm($title, $modid, $permname, $permdesc) 
変更↓
function __construct($title, $modid, $permname, $permdesc)

250行目
function MyXoopsGroupFormCheckBox($caption, $name, $groupId, $values = null)
変更↓
function __construct($caption, $name, $groupId, $values = null)

・myalbum/class/myuploader.php
97行目
function MyXoopsMediaUploader($uploadDir, $allowedMimeTypes, $maxFileSize, $maxWidth=null, $maxHeight=null, $allowedExtensions=null )
変更↓
function __construct($uploadDir, $allowedMimeTypes, $maxFileSize, $maxWidth=null, $maxHeight=null, $allowedExtensions=null )

■2.legacyバージョンアップによるpath変更
・myalbum/admin/import.php
8行目
include_once XOOPS_ROOT_PATH.'/modules/system/constants.php' ;
変更↓
include_once XOOPS_ROOT_PATH.'/modules/legacy/include/xoops2_system_constants.inc.php' ;

・myalbum/admin/export.php line 8 (1)
8行目
include_once XOOPS_ROOT_PATH . '/modules/system/constants.php' ;
変更↓
include_once XOOPS_ROOT_PATH.'/modules/legacy/include/xoops2_system_constants.inc.php' ;

・myalbum/admin/groupperm_global.php
11行目
include_once( XOOPS_ROOT_PATH."/modules/system/language/".$xoopsConfig['language']."/admin.php" ) ;
変更↓
include_once( XOOPS_ROOT_PATH."/modules/legacy/language/".$xoopsConfig['language']."/admin.php" ) ;

■3.OpenTable()が無効になる件
・myalbum/editphoto.php
194行目
// Editing Display
include_once( XOOPS_ROOT_PATH."/include/cp_functions.php" ) ; //追加
include(XOOPS_ROOT_PATH."/header.php");
OpenTable() ;

・myalbum/submit.php
244行目
else {
	include_once( XOOPS_ROOT_PATH."/include/cp_functions.php" ) ; //追加
	include( XOOPS_ROOT_PATH . "/header.php" ) ;
	OpenTable() ;

■4.PHP7へのバージョンアップによる書式変更(get_magic_quotes_gpc()が無効になったため)
・myalbum/class/myalbum.textsanitizer.php
163行目 コマンド自体を無効に対処
//if (get_magic_quotes_gpc()) {
			$text = stripslashes($text);
		//}

■5.legacyシステムの変更
・html/class/xoopsform/formselect.php
70行目
return $this->__construct($caption, $name, $value, $size, $multiple);
変更↓       
return self::__construct($caption, $name, $value, $size, $multiple);

■6.その他PHP7での配列書式変更
変更対象ファイル
array()は殆どのファイルにて多数存在するので省略します
例)$name = array() 
変更↓
$name = [];

■7.インストール時の上書き禁止ファイル
以下のファイルが梱包されていますが既にlegacy-2.3にて標準装備されているため上書きはしないようにすること
・xoops_trust_path/libs/smarty/plugins/function.d3comment.php
・xoops_trust_path/libs/smarty/plugins/function.xoopsdhtmltarea.php
・xoops_trust_path/libs/smarty/plugins/function.d3forum_comment_postscount.php
・xoops_trust_path/libs/smarty/plugins/function.function.d3forum_comment_topicscount.php

以上です。データベースの移行は、myx-buckupモジュールの復元を利用すると文字化けしたのでPhpMyAdminを利用したところ正常に移行できました。
投票数:0 平均点:0.00

  条件検索へ


旅と気ままなフォーラム新着投稿

旅と気ままなフォーラムメニュー

欲しい商品が必ず見つかるメジャーなネットショップ

このサイト内の検索

オンライン状況

13 人のユーザが現在オンラインです。 (2 人のユーザが 旅と気ままなフォーラム を参照しています。)

登録ユーザ: 0
ゲスト: 13

もっと...

Facebook,RSSリンク表示


RSSicon 最新記事のRSS