ふたりはララベル (Laravel PHP Framework)

PHPフレームワークのLaravelの体験記を書いていきます。こんなタイトルのブログですが萌え系アニメは一秒たりとも観たことがありません。

HumhubをSafariで使ったときの漢字確定のバグを解消する

HumhubをSafariで使うと、日本語入力でEnterキーを押すと必ず改行になる。これを解消するためにkeyCode = 229のチェックを追加した。

        function inOrNearComposition(view, event) {
          if (view.composing) { return true }
          // See https://www.stum.de/2016/06/24/handling-ime-events-in-javascript/.
          // On Japanese input method editors (IMEs), the Enter key is used to confirm character
          // selection. On Safari, when Enter is pressed, compositionend and keydown events are
          // emitted. The keydown event triggers newline insertion, which we don't want.
          // This method returns true if the keydown event should be ignored.
          // We only ignore it once, as pressing Enter a second time *should* insert a newline.
          // Furthermore, the keydown event timestamp must be close to the compositionEndedAt timestamp.
          // This guards against the case where compositionend is triggered without the keyboard
          // (e.g. character confirmation may be done with the mouse), and keydown is triggered
          // afterwards- we wouldn't want to ignore the keydown event in this case.
          if (result.safari && Math.abs(event.timeStamp - view.compositionEndedAt) < 500) {
            view.compositionEndedAt = -2e8;
            return true
          }
	    if (event.keyCode===229) { return true} #←これを追加する
          return false
        }

Humhubで日本語入力ができない件を解決する

HumhubのrichtextエディターはWebブラウザから日本語入力ができないんだけど、解決方法があった。

ファイル「protected\humhub\modules\content\resources\js\humhub.ui.richtext.prosemirror.js」の

    RichTextEditor.prototype.focus = function() {
        this.editor.view.focus();
    };

上記を全部消せば正常に動く。消したあとはキャッシュクリアを忘れずに実施してください。

Humhubの「ハンドラが見つかりません」エラー

こういうエラーがたまにでる。

最後の操作を処理中にエラーが発生しました。 (ハンドラが見つかりません)。

これは「設定→Advanced→キャッシュ→保存してキャッシュクリア」で解決する。

HumHub 1.3リリース

HumHubが1.3になったんだけど、Cron設定がちょっと変わった。yii cronは一つになり、yii queueが増えた。

* * * * *  /usr/bin/php /path/to/humhub/protected/yii queue/run >/dev/null 2>&1
* * * * *  /usr/bin/php /path/to/humhub/protected/yii cron/run >/dev/null 2>&1

HumHubに投稿する画像のサイズを小さくする

HumHubは投稿画像を小さくしてくれないので、5MBの写真をアップするとそのままアップロードされる。

まず画像を小さくする関数を作って

<?php

namespace humhub\modules\mymodules\libs;

use humhub\modules\file\libs\ImageConverter;

class Reduce {

    public static function Resize($uploadedFile) {

	    $filepath = $uploadedFile->tempName;

	    $options = [
	        'width' => 400,
	        'height' => 400,
	        'mode' => 'max',
	    ];

	    ImageConverter::Resize($filepath, $filepath, $options);

	    $uploadedFile->size = filesize($filepath);

	    return $uploadedFile;
	}

}

humhub\modules\file\actions\UploadAction.php追記する。

    protected function handleFileUpload(UploadedFile $uploadedFile, $hideInStream = false)
    {

	$uploadedFile = \humhub\modules\mymodule\libs\Reduce::Resize($uploadedFile);

とりあえず応急処置。

HumHubでプロフィールを非表示にする

HumHubでは管理者画面で一個ずつプロフィールを非表示にできるんだけど、それを一挙にやる。このコードをどこかで実行すればいい。

$fields = \humhub\modules\user\models\ProfileField::find()->all();

$visibles = ['firstname', 'title']; # 非表示にしたくないプロフィールはここに記述

foreach ($fields as $field) {

  if (!in_array($field->internal_name, $visibles)) {

    $field->required = 0;

    $field->show_at_registration = 0;

    $field->editable = 0;

    $field->visible = 0;

    $field->searchable = 0;

    $field->save();
  }
}

humhubでCSSを追記する

humhubでオリジナルなCSSを追加したい。編集するファイルは
humhub\protected\humhub\assets\AppAsset.php

<?php

namespace humhub\assets;

use yii\web\AssetBundle;

class AppAsset extends AssetBundle
{

    /**
     * @inheritdoc
     */
    public $css = [
        'css/temp.css',
        'css/bootstrap-wysihtml5.css',
        'css/flatelements.css',
        'css/blueimp-gallery.min.css',
        'css/mystyle.css' #追加
    ];
<||

Humhubでダッシュボードに書き込みを置く

Humhubでダッシュボードに書き込みを置いてみた。
編集するのは
humhub\modules\dashboard\views\dashboard\index.php

<?php
/**
 * @var \humhub\modules\user\models\User $contentContainer
 * @var bool $showProfilePostForm
 */

use humhub\modules\dashboard\widgets\DashboardContent;
use humhub\modules\dashboard\widgets\Sidebar;
use humhub\modules\activity\widgets\Stream;
use humhub\widgets\FooterMenu;

use humhub\modules\post\widgets\Form; # 追加

?>

<div class="container">
    <div class="row">
        <div class="col-md-8 layout-content-container">
            <?= Form::widget(['contentContainer' => Yii::$app->user->getIdentity()]); ?> <!-- 追加 -->
            <?= DashboardContent::widget([
                'contentContainer' => $contentContainer,
                'showProfilePostForm' => $showProfilePostForm
            ]);
            ?>
        </div>

環境変数を使わずにopenssl_pkey_newを使う

Windows+Xampp環境だと、openssl_pkey_newが動かない。いろいろ設定頑張れば出来そうだけど、下記のようにソースコードにフルパス書けば成功することに気がついた。

$res = openssl_pkey_new([
 'config' => 'D:\xampp\apache\conf\openssl.cnf',
 'digest_alg' => 'sha1',
 'private_key_bits' => 4096,
 'encrypt_key' => false
]);

xserverでは、shell_execの一部が動かない

謎の仕様。Xserverではshell_execは使える。ところが

shell_exec('php -v')

を使うとプロセスが返ってこないし、

shell_exec('python -V')

だと結果がNULLになる。

この仕様のせいで、friendicaが使えなくて困った。

Xserverにgitをインストールする

ググった情報のコピペだけでは出来なかったよ。まず

wget https://github.com/git/git/archive/master.zip

はOpenSSLのバージョンの関係で失敗するので

wget https://www.kernel.org/pub/software/scm/git/git-2.17.0.tar.gz

にした。ところがmakeが出来なかった。

tar zxvf git-2.17.0.tar.gz
cd git-2.17.0
./configure --prefix=$HOME/opt
make -i all
make -i install
~/opt/bin/git --version

make -i でエラー無視インストールすると上手くいった。