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

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

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 でエラー無視インストールすると上手くいった。

Excelの書式を全て削除するマクロ

Excelで書式が増えすぎた場合は手で削除するのはムリ。マクロで一気に消しましょう。

Sub Excelの書式を全て削除()

    Dim myStyle As style

    On Error Resume Next

    For Each myStyle In ActiveWorkbook.Styles
    
        If Not myStyle.BuiltIn Then
            myStyle.Delete
        End If

    Next

End Sub

humhubをWindowsにインストールする

PHPSNS、どれを使うか悩んでいる。OXWALLは実際に運用したけど、すごく使いにくかった。Minds、Movimもイマイチ。Elggはバージョン3が中々出ない。というわけでhumhubにチャレンジ。Yiiフレームワークはあまり好きじゃないんだが…。

バージョンの注意事項

humhub 1.2以前はPHP7.2では動作しないので注意。PHPのバージョンを下げるか、humhub 1.3以降を使う。

ダウンロード

php.iniの設定

php.iniの「php_ldap.dll」「php_intl.dll」のコメントを外す。

composer-asset-pluginをインストール

D:\xampp\source\humhub>composer global require "fxp/composer-asset-plugin:^1.2.0"
Changed current directory to C:/Users/AppData/Roaming/Composer./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
  - Installing fxp/composer-asset-plugin (v1.4.2): Downloading (100%)
Writing lock file
Generating autoload files

このあとcomposer Update。時間はかなりかかる。

f:id:laravel:20180623052348p:plain