登録日
2017年4月9日

メンバー検索

  

dsds

名前(ニックネーム)
dsds
自分のconcrete5サイト
ホームページ
自己紹介
concrete5.org のユーザー名
concrete5 Slack Team ID
Twitterアカウント
フォーラム総投稿数
54

コミュニティバッジ

投稿

1から10までを表示 (計54)

Re: 記事ブロックの「表」が表示されない

お手数をおかけして申しわけありません。
Yamachann11様、ありがとうございました。
調べたりファイルを書き換えてアップロードして試行錯誤しましたが私には解りませんでした。
テーマの作者に連絡をし続けて何とか対応してくれるかもしれません。
いつになるかわからないのが不安ですが交渉してみます。
ありがとうございました。

Posted on 11月 05, 2018 at 10:16 午後

パスワード再発行で登録していないメールアドレスがわかるように

いつもありがとうございます。

Xserverでconcrete5 8.4.3を使っていますが、ログイン画面の入力フォームで...

【パスワード再発行】
     ↓
【パスワードを忘れた方はこちら】
「ユーザー登録したメールアドレスを入力してください。パスワードリセットの方法をお送りします。 」
「メールアドレス 入力フォーム」
【パスワードをリセットしてメールで送信】

上記で登録していないメールアドレスを入力しても...

【リセットの手順が送信されました。】
「このメールアドレスと接続されたアカウントがある場合、パスワードのリセットの案内が送られています。 」

と表示され、勿論メールは届かないのですが、こちらの公式サイトのように「そのメールアドレスは、データベースに登録されていません。」などログインユーザーに誤っているメールアドレスである事などわかるようにはできませんでしょうか?

管理画面などで設定があれば良いのですが

お手数をおかけしますが、宜しくお願い致します。

Posted on 10月 21, 2018 at 11:23 午前

Stuccoテーマのアカウントのフッタードロップダウンメニューについて

いつもお世話になっております。
Xserverにconcrete5 8.4.3でStuccoテーマを使用しています。
2つ質問させて下さい。
1.フッター分部のカウントドロップダウンメニューは管理者と通常ユーザーでは右側の矢印部分の形が違うのですがこれが正しいのでしょうか?(画像1と2)

2.スマフォ(Android)などで表示した場合、クレジットが隠れるので別の場所にするなどの方法があればお願いします。

ファイルはfooter.phpにアカウントメニューの記述らしきものはありました。

お手数をおかけして申し訳ありませんが、よろしくお願い致します。

添付: 1.JPG 2.JPG 3.png
Posted on 10月 16, 2018 at 4:08 午後

Re: ログインページ背景とhead のバージョン番号を非表示にする

DeaconBlues様、ありがとうございます。
[]はPHP7からは理解していたのですが、2つの記述を一緒にするのがそもそも間違っていたようです。
先ほどテストしましたら...

<?php
return [
'white_label' => [
'background_image' => 'none',
],
'misc' => [
'app_version_display_in_header' => false,
],
];

上記で動作確認できたようです。
お手数をおかけしました。
ありがとうございました!

Posted on 10月 14, 2018 at 12:30 午前

ログインページ背景とhead のバージョン番号を非表示にする

いつもお世話になります。
頻繁に質問させて頂き申しわけありません。
【日替わりの背景画像を非表示にする】
<?php
return array(
'white_label' => array(
'background_image' => 'none'
),
);

【head のバージョン番号を非表示にする】
<?php
return [
'misc' => [
'app_version_display_in_header' => false,
],
];

上記を/application/config/concrete.phpに記述するとエラーが表示されます。

どちらか1つしか設定できません。

できればアドオンの【Vlogin_page_background】を使用しないで対応したいです。

concrete5 8.4.3をXserverに新規でインストールした状態です。

申し訳ございませんが宜しくお願い致します。

Posted on 10月 11, 2018 at 12:31 午前

Re: Re: PHP7.2 メール送信時にエラー

KatZ様、ありがとうございます。

確認しましたが該当場所には/application/blocks/form/controller.phpしかありませんでしたので17行目に「use Concrete\Block\Form\MiniSurvey;」を追加したところ改善しました。
作成したレガシーフォームを削除してもエラーは表示されず、正常に削除できました。
助かりました。

ありがとうございました!

※テストで最新のconcrete5 8.4.3を新規インストールして試みましたが、同じエラーが表示されました。

Class 'Application\Block\Form\MiniSurvey' not found

アクセス拒否

同じ方法で正常に動作しました。

concrete5 8.4.2まではエラーが出なかったのでconcrete5 8.4.3にアップグレード及び新規インストールで発生しているみたいです。

Posted on 10月 10, 2018 at 7:01 午前

Re: Re: PHP7.2 メール送信時にエラー

Katz様、DeaconBlues様
お手数をおかけして申し訳ありません。
アップロードして頂いたファイルで送信フォームから正常に送信ができました。

本当にありがとうございます

ですが、他のエラーが発生しました。
解決したと思い、既存と新規でテスト作成していたレガシーフォームを削除しようとしましたら下記のエラーが表示されました。

Class 'Application\Block\Form\MiniSurvey' not found

アクセス拒否


エラーログは...

Exception Occurred: /home/アカウント/ドメイン/public_html/application/blocks/form/controller.php:638 Class 'Application\Block\Form\MiniSurvey' not found (0)


他で質問している内容と同じでしたらすみません。
宜しくお願い致します。

Posted on 10月 05, 2018 at 2:19 午後

Re: 記事ブロックの「表」が表示されない

Tao様、ありがとうございます。
リンク先を確認させて頂きましたが解りませんでした。
私のレベルが低い事と努力が足りないようですね。
申しわけありませんでした。
時間はかかるかもしれませんが確認します。
お手数をおかけしました。

Posted on 10月 04, 2018 at 11:32 午後

Re: Re: PHP7.2 メール送信時にエラー

ありがとうございます。
先ほどcontroller.phpを修正しました。

if (!count($errors)) {
-----
の行を

-----
$noError = true;
if (is_array($errors))) {
if (count($errors)) {
$noError = false
}
}
if ($noError) {
-----
の6行に変更してアップロードしたところ問合せページを表示する際にエラーが発生しました。

「予期せぬエラーが発生しました。syntax error, unexpected ')'」

エラーログは下記のようになっています。

Exception Occurred: /home/アカウント/ドメイン/public_html/application/blocks/form/controller.php:421 syntax error, unexpected ')' (0)

すみません。
宜しくお願い致します。

Posted on 10月 04, 2018 at 6:06 午後

Re: Re: PHP7.2 メール送信時にエラー

ありがとうございます。
修正してみますが念のために該当のファイルをすべて記載しますので申し訳ありませんがご確認宜しくお願いします。
このファイルはサイトに設定前の状態です。

宜しくお願い致します。


<?php

namespace Application\Block\Form;

use Concrete\Core\Block\BlockController;
use Core;
use Database;
use User;
use Page;
use UserInfo;
use Exception;
use FileImporter;
use FileSet;
use File;
use Config;
use Concrete\Core\File\Version;

class Controller extends BlockController
{
public $btTable = 'btForm';
public $btQuestionsTablename = 'btFormQuestions';
public $btAnswerSetTablename = 'btFormAnswerSet';
public $btAnswersTablename = 'btFormAnswers';
public $btInterfaceWidth = '420';
public $btInterfaceHeight = '430';
public $thankyouMsg = '';
public $submitText = '';
public $noSubmitFormRedirect = 0;
protected $btCacheBlockRecord = false;
protected $btExportTables = array('btForm', 'btFormQuestions');
protected $btExportPageColumns = array('redirectCID');
protected $lastAnswerSetId = 0;
protected $btCopyWhenPropagate = true;

/**
* Used for localization. If we want to localize the name/description we have to include this.
*
* @return string
*/
public function getBlockTypeDescription()
{
return t("Build simple forms and surveys.");
}

public function getBlockTypeName()
{
return t("Form");
}

public function getJavaScriptStrings()
{
return array(
'delete-question' => t('Are you sure you want to delete this question?'),
'form-name' => t('Your form must have a name.'),
'complete-required' => t('Please complete all required fields.'),
'ajax-error' => t('AJAX Error.'),
'form-min-1' => t('Please add at least one question to your form.'),
);
}

protected function importAdditionalData($b, $blockNode)
{
if (isset($blockNode->data)) {
foreach ($blockNode->data as $data) {
if ($data['table'] != $this->getBlockTypeDatabaseTable()) {
$table = (string) $data['table'];
if (isset($data->record)) {
foreach ($data->record as $record) {
$aar = new \Concrete\Core\Legacy\BlockRecord($table);
$aar->bID = $b->getBlockID();
foreach ($record->children() as $node) {
$nodeName = $node->getName();
$aar->{$nodeName} = (string) $node;
}
if ($table == 'btFormQuestions') {
$db = Database::connection();
$aar->questionSetId = $db->GetOne('select questionSetId from btForm where bID = ?', array($b->getBlockID()));
}
$aar->Replace();
}
}
}
}
}
}

public function __construct($b = null)
{
parent::__construct($b);
//$this->bID = intval($this->_bID);
if (is_string($this->thankyouMsg) && !strlen($this->thankyouMsg)) {
$this->thankyouMsg = $this->getDefaultThankYouMsg();
}
if (is_string($this->submitText) && !strlen($this->submitText)) {
$this->submitText = $this->getDefaultSubmitText();
}
}

/**
* Internal helper function.
*/
private function viewRequiresJqueryUI()
{
$whereInputTypes = "inputType = 'date' OR inputType = 'datetime'";
$sql = "SELECT COUNT(*) FROM {$this->btQuestionsTablename} WHERE questionSetID = ? AND bID = ? AND ({$whereInputTypes})";
$vals = array(intval($this->questionSetId), intval($this->bID));
$JQUIFieldCount = Database::connection()->GetOne($sql, $vals);

return (bool) $JQUIFieldCount;
}

// we are not using registerViewAssets because this block doesn't support caching
// and we have some block record things we need to check.
public function view()
{
if ($this->viewRequiresJqueryUI()) {
$this->requireAsset('css', 'jquery/ui');
$this->requireAsset('javascript', 'jquery/ui');
}
$this->requireAsset('css', 'core/frontend/errors');
if ($this->displayCaptcha) {
$this->requireAsset('css', 'core/frontend/captcha');
}
}
public function getDefaultThankYouMsg()
{
return t("Thanks!");
}

public function getDefaultSubmitText()
{
return 'Submit';
}

/**
* Form add or edit submit
* (run after the duplicate method on first block edit of new page version).
*/
public function save($data = array())
{
if (!$data || count($data) == 0) {
$data = $_POST;
}
$data += array(
'qsID' => null,
'oldQsID' => null,
'questions' => array(),
);

$b = $this->getBlockObject();
$c = $b->getBlockCollectionObject();

$db = Database::connection();
if (intval($this->bID) > 0) {
$q = "select count(*) as total from {$this->btTable} where bID = ".intval($this->bID);
$total = $db->getOne($q);
} else {
$total = 0;
}

if (isset($_POST['qsID']) && $_POST['qsID']) {
$data['qsID'] = $_POST['qsID'];
}
if (!$data['qsID']) {
$data['qsID'] = time();
}
if (!$data['oldQsID']) {
$data['oldQsID'] = $data['qsID'];
}
$data['bID'] = intval($this->bID);

if (!empty($data['redirectCID'])) {
$data['redirect'] = 1;
} else {
$data['redirect'] = 0;
$data['redirectCID'] = 0;
}

if (empty($data['addFilesToSet'])) {
$data['addFilesToSet'] = 0;
}

if (!isset($data['surveyName'])) {
$data['surveyName'] = '';
}

if (!isset($data['submitText'])) {
$data['submitText'] = '';
}

if (!isset($data['notifyMeOnSubmission'])) {
$data['notifyMeOnSubmission'] = 0;
}

if (!isset($data['thankyouMsg'])) {
$data['thankyouMsg'] = '';
}

if (!isset($data['displayCaptcha'])) {
$data['displayCaptcha'] = 0;
}

$v = array($data['qsID'], $data['surveyName'], $data['submitText'], intval($data['notifyMeOnSubmission']), $data['recipientEmail'], $data['thankyouMsg'], intval($data['displayCaptcha']), intval($data['redirectCID']), intval($data['addFilesToSet']), intval($this->bID));

//is it new?
if (intval($total) == 0) {
$q = "insert into {$this->btTable} (questionSetId, surveyName, submitText, notifyMeOnSubmission, recipientEmail, thankyouMsg, displayCaptcha, redirectCID, addFilesToSet, bID) values (?, ?, ?, ?, ?, ?, ?, ?, ?,?)";
} else {
$v[] = $data['qsID'];
$q = "update {$this->btTable} set questionSetId = ?, surveyName=?, submitText=?, notifyMeOnSubmission=?, recipientEmail=?, thankyouMsg=?, displayCaptcha=?, redirectCID=?, addFilesToSet=? where bID = ? AND questionSetId= ?";
}

$rs = $db->query($q, $v);

//Add Questions (for programmatically creating forms, such as during the site install)
if (count($data['questions']) > 0) {
$miniSurvey = new MiniSurvey();
foreach ($data['questions'] as $questionData) {
$miniSurvey->addEditQuestion($questionData, 0);
}
}

$this->questionVersioning($data);

return true;
}

/**
* Ties the new or edited questions to the new block number.
* New and edited questions are temporarily given bID=0, until the block is saved... painfully complicated.
*
* @param array $data
*/
protected function questionVersioning($data = array())
{
$data += array(
'ignoreQuestionIDs' => '',
'pendingDeleteIDs' => '',
);
$db = Database::connection();
$oldBID = intval($data['bID']);

//if this block is being edited a second time, remove edited questions with the current bID that are pending replacement
//if( intval($oldBID) == intval($this->bID) ){
$vals = array(intval($data['oldQsID']));
$pendingQuestions = $db->getAll('SELECT msqID FROM btFormQuestions WHERE bID=0 && questionSetId=?', $vals);
foreach ($pendingQuestions as $pendingQuestion) {
$vals = array(intval($this->bID), intval($pendingQuestion['msqID']));
$db->query('DELETE FROM btFormQuestions WHERE bID=? AND msqID=?', $vals);
}
//}

//assign any new questions the new block id
$vals = array(intval($data['bID']), intval($data['qsID']), intval($data['oldQsID']));
$rs = $db->query('UPDATE btFormQuestions SET bID=?, questionSetId=? WHERE bID=0 && questionSetId=?', $vals);

//These are deleted or edited questions. (edited questions have already been created with the new bID).
$ignoreQuestionIDsDirty = explode(',', $data['ignoreQuestionIDs']);
$ignoreQuestionIDs = array(0);
foreach ($ignoreQuestionIDsDirty as $msqID) {
$ignoreQuestionIDs[] = intval($msqID);
}
$ignoreQuestionIDstr = implode(',', $ignoreQuestionIDs);

//remove any questions that are pending deletion, that already have this current bID
$pendingDeleteQIDsDirty = explode(',', $data['pendingDeleteIDs']);
$pendingDeleteQIDs = array();
foreach ($pendingDeleteQIDsDirty as $msqID) {
$pendingDeleteQIDs[] = intval($msqID);
}
$vals = array($this->bID, intval($data['qsID']));
$pendingDeleteQIDs = implode(',', $pendingDeleteQIDs);
$unchangedQuestions = $db->query('DELETE FROM btFormQuestions WHERE bID=? AND questionSetId=? AND msqID IN ('.$pendingDeleteQIDs.')', $vals);
}

/**
* Duplicate will run when copying a page with a block, or editing a block for the first time within a page version (before the save).
*/
public function duplicate($newBID)
{
$b = $this->getBlockObject();
$c = $b->getBlockCollectionObject();

$db = Database::connection();
$v = array($this->bID);
$q = "select * from {$this->btTable} where bID = ? LIMIT 1";
$r = $db->query($q, $v);
$row = $r->fetchRow();

//if the same block exists in multiple collections with the same questionSetID
if (count($row) > 0) {
$oldQuestionSetId = $row['questionSetId'];

//It should only generate a new question set id if the block is copied to a new page,
//otherwise it will loose all of its answer sets (from all the people who've used the form on this page)
$questionSetCIDs = $db->getCol("SELECT distinct cID FROM {$this->btTable} AS f, CollectionVersionBlocks AS cvb ".
"WHERE f.bID=cvb.bID AND questionSetId=".intval($row['questionSetId']));

//this question set id is used on other pages, so make a new one for this page block
if (count($questionSetCIDs) > 1 || !in_array($c->cID, $questionSetCIDs)) {
$newQuestionSetId = time();
$_POST['qsID'] = $newQuestionSetId;
} else {
//otherwise the question set id stays the same
$newQuestionSetId = $row['questionSetId'];
}

//duplicate survey block record
//with a new Block ID and a new Question
$v = array($newQuestionSetId,$row['surveyName'],$row['submitText'], $newBID,$row['thankyouMsg'],intval($row['notifyMeOnSubmission']),$row['recipientEmail'],$row['displayCaptcha'], $row['addFilesToSet']);
$q = "insert into {$this->btTable} ( questionSetId, surveyName, submitText, bID,thankyouMsg,notifyMeOnSubmission,recipientEmail,displayCaptcha,addFilesToSet) values (?, ?, ?, ?, ?, ?, ?, ?,?)";
$result = $db->Execute($q, $v);

$rs = $db->query("SELECT * FROM {$this->btQuestionsTablename} WHERE questionSetId=$oldQuestionSetId AND bID=".intval($this->bID));
while ($row = $rs->fetchRow()) {
$v = array($newQuestionSetId,intval($row['msqID']), intval($newBID), $row['question'],$row['inputType'],$row['options'],$row['position'],$row['width'],$row['height'],$row['required'],$row['defaultDate']);
$sql = "INSERT INTO {$this->btQuestionsTablename} (questionSetId,msqID,bID,question,inputType,options,position,width,height,required,defaultDate) VALUES (?,?,?,?,?,?,?,?,?,?,?)";
$db->Execute($sql, $v);
}

return $newQuestionSetId;
}

return 0;
}

/**
* Users submits the completed survey.
*
* @param int $bID
*/
public function action_submit_form($bID = false)
{
if ($this->bID != $bID) {
return false;
}

$ip = Core::make('helper/validation/ip');
$this->view();

if ($ip->isBanned()) {
$this->set('invalidIP', $ip->getErrorMessage());

return;
}

$txt = Core::make('helper/text');
$db = Database::connection();

//question set id
$qsID = intval($_POST['qsID']);
if ($qsID == 0) {
throw new Exception(t("Oops, something is wrong with the form you posted (it doesn't have a question set id)."));
}

//get all questions for this question set
$rows = $db->GetArray("SELECT * FROM {$this->btQuestionsTablename} WHERE questionSetId=? AND bID=? order by position asc, msqID", array($qsID, intval($this->bID)));


if (!count($rows)) {
throw new Exception(t("Oops, something is wrong with the form you posted (it doesn't have any questions)."));
}

$errorDetails = array();

// check captcha if activated
if ($this->displayCaptcha) {
$captcha = Core::make('helper/validation/captcha');
if (!$captcha->check()) {
$errors['captcha'] = t("Incorrect captcha code");
$_REQUEST['ccmCaptchaCode'] = '';
}
}

//checked required fields
foreach ($rows as $row) {
if ($row['inputType'] == 'datetime') {
if (!isset($datetime)) {
$datetime = Core::make('helper/form/date_time');
}
$translated = $datetime->translate('Question'.$row['msqID']);
if ($translated) {
$_POST['Question'.$row['msqID']] = $translated;
}
}
if (intval($row['required']) == 1) {
$notCompleted = 0;
if ($row['inputType'] == 'email') {
if (!Core::make('helper/validation/strings')->email($_POST['Question' . $row['msqID']])) {
$errors['emails'] = t('You must enter a valid email address.');
$errorDetails[$row['msqID']]['emails'] = $errors['emails'];
}
}
if ($row['inputType'] == 'checkboxlist') {
$answerFound = 0;
foreach ($_POST as $key => $val) {
if (strstr($key, 'Question'.$row['msqID'].'_') && strlen($val)) {
$answerFound = 1;
}
}
if (!$answerFound) {
$notCompleted = 1;
}
} elseif ($row['inputType'] == 'fileupload') {
if (!isset($_FILES['Question'.$row['msqID']]) || !is_uploaded_file($_FILES['Question'.$row['msqID']]['tmp_name'])) {
$notCompleted = 1;
}
} elseif (!strlen(trim($_POST['Question'.$row['msqID']]))) {
$notCompleted = 1;
}
if ($notCompleted) {
$errors['CompleteRequired'] = t("Complete required fields *");
$errorDetails[$row['msqID']]['CompleteRequired'] = $errors['CompleteRequired'];
}
}
}

//try importing the file if everything else went ok
$tmpFileIds = array();
if (!count($errors)) {
foreach ($rows as $row) {
if ($row['inputType'] != 'fileupload') {
continue;
}
$questionName = 'Question'.$row['msqID'];
if (!intval($row['required']) &&
(
!isset($_FILES[$questionName]['tmp_name']) || !is_uploaded_file($_FILES[$questionName]['tmp_name'])
)
) {
continue;
}
$fi = new FileImporter();
$resp = $fi->import($_FILES[$questionName]['tmp_name'], $_FILES[$questionName]['name']);
if (!($resp instanceof Version)) {
switch ($resp) {
case FileImporter::E_FILE_INVALID_EXTENSION:
$errors['fileupload'] = t('Invalid file extension.');
$errorDetails[$row['msqID']]['fileupload'] = $errors['fileupload'];
break;
case FileImporter::E_FILE_INVALID:
$errors['fileupload'] = t('Invalid file.');
$errorDetails[$row['msqID']]['fileupload'] = $errors['fileupload'];
break;

}
} else {
$tmpFileIds[intval($row['msqID'])] = $resp->getFileID();
if (intval($this->addFilesToSet)) {
$fs = new FileSet();
$fs = $fs->getByID($this->addFilesToSet);
if ($fs->getFileSetID()) {
$fs->addFileToSet($resp);
}
}
}
}
}

if (count($errors)) {
$this->set('formResponse', t('Please correct the following errors:'));
$this->set('errors', $errors);
$this->set('errorDetails', $errorDetails);
} else { //no form errors
//save main survey record
$u = new User();
$uID = 0;
if ($u->isRegistered()) {
$uID = $u->getUserID();
}
$q = "insert into {$this->btAnswerSetTablename} (questionSetId, uID) values (?,?)";
$db->query($q, array($qsID, $uID));
$answerSetID = $db->Insert_ID();
$this->lastAnswerSetId = $answerSetID;

$questionAnswerPairs = array();

if (Config::get('concrete.email.form_block.address') && strstr(Config::get('concrete.email.form_block.address'), '@')) {
$formFormEmailAddress = Config::get('concrete.email.form_block.address');
} else {
$adminUserInfo = UserInfo::getByID(USER_SUPER_ID);
$formFormEmailAddress = $adminUserInfo->getUserEmail();
}
$replyToEmailAddress = $formFormEmailAddress;
//loop through each question and get the answers
foreach ($rows as $row) {
//save each answer
$answerDisplay = '';
if ($row['inputType'] == 'checkboxlist') {
$answer = array();
$answerLong = "";
$keys = array_keys($_POST);
foreach ($keys as $key) {
if (strpos($key, 'Question'.$row['msqID'].'_') === 0) {
$answer[] = $txt->sanitize($_POST[$key]);
}
}
} elseif ($row['inputType'] == 'text') {
$answerLong = $txt->sanitize($_POST['Question'.$row['msqID']]);
$answer = '';
} elseif ($row['inputType'] == 'fileupload') {
$answerLong = "";
$answer = intval($tmpFileIds[intval($row['msqID'])]);
if ($answer > 0) {
$answerDisplay = File::getByID($answer)->getVersion()->getDownloadURL();
} else {
$answerDisplay = t('No file specified');
}
} elseif ($row['inputType'] == 'url') {
$answerLong = "";
$answer = $txt->sanitize($_POST['Question'.$row['msqID']]);
} elseif ($row['inputType'] == 'email') {
$answerLong = "";
$answer = $txt->sanitize($_POST['Question'.$row['msqID']]);
if (!empty($row['options'])) {
$settings = unserialize($row['options']);
if (is_array($settings) && array_key_exists('send_notification_from', $settings) && $settings['send_notification_from'] == 1) {
$email = $txt->email($answer);
if (!empty($email)) {
$replyToEmailAddress = $email;
}
}
}
} elseif ($row['inputType'] == 'telephone') {
$answerLong = "";
$answer = $txt->sanitize($_POST['Question'.$row['msqID']]);
} else {
$answerLong = "";
$answer = $txt->sanitize($_POST['Question'.$row['msqID']]);
}

if (is_array($answer)) {
$answer = implode(',', $answer);
}

$questionAnswerPairs[$row['msqID']]['question'] = $row['question'];
$questionAnswerPairs[$row['msqID']]['answer'] = $txt->sanitize($answer.$answerLong);
$questionAnswerPairs[$row['msqID']]['answerDisplay'] = strlen($answerDisplay) ? $answerDisplay : $questionAnswerPairs[$row['msqID']]['answer'];

$v = array($row['msqID'],$answerSetID,$answer,$answerLong);
$q = "insert into {$this->btAnswersTablename} (msqID,asID,answer,answerLong) values (?,?,?,?)";
$db->query($q, $v);
}
$foundSpam = false;

$submittedData = '';
foreach ($questionAnswerPairs as $questionAnswerPair) {
$submittedData .= $questionAnswerPair['question']."\r\n".$questionAnswerPair['answer']."\r\n"."\r\n";
}
$antispam = Core::make('helper/validation/antispam');
if (!$antispam->check($submittedData, 'form_block')) {
// found to be spam. We remove it
$foundSpam = true;
$q = "delete from {$this->btAnswerSetTablename} where asID = ?";
$v = array($this->lastAnswerSetId);
$db->Execute($q, $v);
$db->Execute("delete from {$this->btAnswersTablename} where asID = ?", array($this->lastAnswerSetId));
}

if (intval($this->notifyMeOnSubmission) > 0 && !$foundSpam) {
if (Config::get('concrete.email.form_block.address') && strstr(Config::get('concrete.email.form_block.address'), '@')) {
$formFormEmailAddress = Config::get('concrete.email.form_block.address');
} else {
$adminUserInfo = UserInfo::getByID(USER_SUPER_ID);
$formFormEmailAddress = $adminUserInfo->getUserEmail();
}

$mh = Core::make('helper/mail');
$mh->to($this->recipientEmail);
$mh->from($formFormEmailAddress);
$mh->replyto($replyToEmailAddress);
$mh->addParameter('formName', $this->surveyName);
$mh->addParameter('questionSetId', $this->questionSetId);
$mh->addParameter('questionAnswerPairs', $questionAnswerPairs);
$mh->load('block_form_submission');
$mh->setSubject(t('%s Form Submission', $this->surveyName));
//echo $mh->body.'<br>';
@$mh->sendMail();

// ---------------------------------------------------------------
// 自動返信処理 Auto Reply
// ---------------------------------------------------------------
// --------- 編集が必要なのはココから
$myFromName = "山田 太郎"; // 送信者名
$myFromAddress = "myaddress@example.com"; // 送信者メールアドレス
$myMailTitle = "お問い合わせありがとうございます"; // メールの件名
$myMailTemplate = "block_form_auto_reply"; // メールのテンプレート名
// --------- 編集が必要なのはココまで

$mh = Core::make('helper/mail');
$mh->to($replyToEmailAddress);
$mh->from($myFromAddress);
$mh->addParameter('questionAnswerPairs', $questionAnswerPairs);
$mh->load($myMailTemplate);
$mh->setSubject(t($myMailTitle));
@$mh->sendMail();
// ---------------------------------------------------------------
// / 自動返信処理 Auto Reply
// ---------------------------------------------------------------
}

if (!$this->noSubmitFormRedirect) {
$targetPage = null;
if ($this->redirectCID == HOME_CID) {
$targetPage = Page::getByID(HOME_CID);
} elseif ($this->redirectCID > 0) {
$pg = Page::getByID($this->redirectCID);
if (is_object($pg) && $pg->cID) {
$targetPage = $pg;
}
}
if (is_object($targetPage)) {
$response = \Redirect::page($targetPage);
} else {
$response = \Redirect::page(Page::getCurrentPage());
$url = $response->getTargetUrl() . "?surveySuccess=1&qsid=".$this->questionSetId."#formblock".$this->bID;
$response->setTargetUrl($url);
}
$response->send();
exit;
}
}
}

public function delete()
{
$db = Database::connection();

$deleteData['questionsIDs'] = array();
$deleteData['strandedAnswerSetIDs'] = array();

$miniSurvey = new MiniSurvey();
$info = $miniSurvey->getMiniSurveyBlockInfo($this->bID);

//get all answer sets
$q = "SELECT asID FROM {$this->btAnswerSetTablename} WHERE questionSetId = ".intval($info['questionSetId']);
$answerSetsRS = $db->query($q);

//delete the questions
$deleteData['questionsIDs'] = $db->getAll("SELECT qID FROM {$this->btQuestionsTablename} WHERE questionSetId = ".intval($info['questionSetId']).' AND bID='.intval($this->bID));
foreach ($deleteData['questionsIDs'] as $questionData) {
$db->query("DELETE FROM {$this->btQuestionsTablename} WHERE qID=".intval($questionData['qID']));
}

//delete left over answers
$strandedAnswerIDs = $db->getAll('SELECT fa.aID FROM `btFormAnswers` AS fa LEFT JOIN btFormQuestions as fq ON fq.msqID=fa.msqID WHERE fq.msqID IS NULL');
foreach ($strandedAnswerIDs as $strandedAnswer) {
$db->query('DELETE FROM `btFormAnswers` WHERE aID='.intval($strandedAnswer['aID']));
}

//delete the left over answer sets
$deleteData['strandedAnswerSetIDs'] = $db->getAll('SELECT aset.asID FROM btFormAnswerSet AS aset LEFT JOIN btFormAnswers AS fa ON aset.asID=fa.asID WHERE fa.asID IS NULL');
foreach ($deleteData['strandedAnswerSetIDs'] as $strandedAnswerSetIDs) {
$db->query('DELETE FROM btFormAnswerSet WHERE asID='.intval($strandedAnswerSetIDs['asID']));
}

//delete the form block
$q = "delete from {$this->btTable} where bID = '{$this->bID}'";
$r = $db->query($q);

parent::delete();

return $deleteData;
}
}

Posted on 10月 04, 2018 at 5:54 午後