ホーム > フォーラム > 質問箱 > Xigg「公開待ち」から「公開記事」へ遷移させたい

Xigg「公開待ち」から「公開記事」へ遷移させたい
投稿者: itv | 投稿日時: 2008/7/11 2:26 | 閲覧: 14082回
itv
ホダ塾ディストリビューション(HD-1.0.1b)とXigg1.20を使用しています。
Xiggサイト開設にあたり、
・当初の投票はあまり多くは見込めない。
・記事投稿後無条件に「公開」とすると投票0件の記事がズラリと並ぶ。
という事情より

「登録ユーザ」権限にて投稿直後には「公開待ち」とし
1件でも投票があれば「公開記事」にする
というポリシーでの運営開始を考えています。

しかしながらこの動作がうまく行かないため、対応を教授頂きたく。

【やったこと】
1).登録ユーザ権限で記事を投稿し、「公開待ち」の状態とする。
2).Xigg管理画面「公開待ち記事が公開されるために必要な得票数」の最小値に1 または5を設定可能とする。
xoops_trust_path\modules\Xigg\xoops_version.php ライン245-246
[変更前]

	'default'		=> 10,
	'options'       => array('10' => 10, '20' => 20, '30' => 30, '50' => 50, '100' => 100, '200' => 200, '500' => 500, '1000' => 1000)

[変更後]

	'default'		=> 1,
	'options'       => array('1' => 1, '5' => 5, '10' => 10, '20' => 20, '30' => 30, '50' => 50, '100' => 100, '200' => 200, '500' => 500, '1000' => 1000)


→管理画面で1を設定後、DBの値を参照し1に書き換えられたことを確認。

3).上記変更でも最小値1の場合に公開状態(publish)にするロジックを通過しないようだったので比較式に等号(=)を追加

xoops_trust_path\PEAR\Xigg\Main\SubmitVote.php ライン63
[変更前]

            if ($node_votes > $context->application->config->get('numberOfVotesForPopular')) {

[変更後]

            if ($node_votes >= $context->application->config->get('numberOfVotesForPopular')) {


→デバッグにて1件の投票、および2件の投票のいずれの場合も上記if文が真となることを確認


やったことは以上ですが、この状態で1件の投票、および2件の投票いずれでも公開記事へと移動しません。
お手数ですが対応を教授頂ければ幸いです。
タグ: ,

コメント(4)

新しいものから | 古いものから | ネスト表示 | RSS feed
Re: Xigg「公開待ち」から「公開記事」へ遷移させたい 
投稿者: onokazu | 投稿日時: 2008/7/11 14:42
onokazu
これは完全にバグでした。

if ($node_votes >= $context->application->config->get('numberOfVotesForPopular')) {


の後に、

$node->publish();


となっているかと思いますが、この後に

$node->commit();


を追加して


$node->publish();
$node->commit();


のように変更すれば記事が公開されるかと思います。
Re: Xigg「公開待ち」から「公開記事」へ遷移させたい 
投稿者: itv | 投稿日時: 2008/7/11 15:56 | 親コメント: #18900
itv

$node->publish();
$node->commit();

のように変更したところ、無事記事が公開されました。ありがとうございました。

しかしながら、記事右上の投票数欄が0のままで1になりません。
テーブルを見たところ
**_xigg_voteには投票したレコードが追加されていたのですが
**_xigg_nodeのフィールド「node_vote_count」が0のままでした。
Re: Xigg「公開待ち」から「公開記事」へ遷移させたい 
投稿者: onokazu | 投稿日時: 2008/7/11 18:47 | 親コメント: #18901
onokazu

しかしながら、記事右上の投票数欄が0のままで1になりません。
テーブルを見たところ
**_xigg_voteには投票したレコードが追加されていたのですが
**_xigg_nodeのフィールド「node_vote_count」が0のままでした。


この件ですが、$nodeを再度読み込む必要がありました。

ちょっと修正箇所が増えますが、

xoops_trust_path/PEAR/Xigg/Main.phpを下記のように修正


    function &getNodeById(&$context, $nodeIdVar = 'node_id', $clearCache = false)
    {
        $ret = false;
        if (0 < $node_id = $context->request->getAsInt($nodeIdVar)) {
            $model =& $context->application->locator->getService('Model');
            $node_r =& $model->getRepository('Node');
            if ($clearCache) {
                $node_r->clearCache();
            }
            if (false !== $node =& $node_r->fetchById($node_id)) {
                $ret =& $node;
            }
        }
        return $ret;
    }


xoops_trust_path/PEAR/Xigg/Main/SubmitVote.phpの下記箇所


$node_votes = $node->countVotes();


下記のように変更


// reload node
if (!$node =& $this->_parent->getNodeById($context, 'node_id', true)) {
    $context->response->setError(_('An error occurred'));
    return;
}
$node_votes = $node->getVoteCount();


これで大丈夫ではないかと思います。
Re: Xigg「公開待ち」から「公開記事」へ遷移させたい 
投稿者: itv | 投稿日時: 2008/7/11 19:52 | 親コメント: #18902
itv
期待通りに動作しました。ありがとうございました。:)

    投票(0)

    新しいものから | 古いものから | RSS feed
     
    To Top