2016-10-27 11 views
-1

私は、次のシナリオを持っています。ユーザーがメッセージを投稿した場合、他のユーザーはメッセージを承認できますが、編集者または削除者のみがメッセージを承認できます。ユーザーが承認を出しているかどうかをチェック

以下のifステートメントは動作するはずですが、動作しません。

<td> 
    <?php $author = array(
    $message->user_id == $this->session->userdata('id') 
); ?> 
    <?php if($author): ?> 
    <?php echo anchor('admin/messages/edit/'.$message->id.'', 'Edit', 'class="btn btn-primary"'); ?> 
    <?php echo anchor('admin/messages/delete/'.$message->id.'', 'Delete', 'class="btn btn-danger"'); ?> 
    <?php endif; ?> 
    <?php if(!$author): ?> 
    <?php echo anchor('admin/messages/approve/'.$message->id.'', 'Approve', 'class="btn btn-success"'); ?> 
    <?php endif; ?> 
</td> 

以下のコードは、は、以下の方法が

public function approve($id, $data) { 
    $this->db->where('sms_id', $id); 
    $this->db->update('approval',$data); 
} 

public function some_approve($id, $approval_data) 
{ 
    $this->db->where('id', $id); 
    $this->db->update('messages',$approval_data); 
} 
を作業しているモデル

public function approve($id) 
{ 
    $this->db->select('*'); 
    $this->db->from('approval'); 
    $this->db->join('messages', 'messages.id = approval.sms_id'); 
    $query = $this->db->get(); 
    $first_approval = $query->row('first_approval'); 
    $second_approval = $query->row('second_approval'); 
    $third_approval = $query->row('third_approval'); 

    if ($first_approval == null) { 
     $data = array(
      'first_approval' => $this->session->userdata('user_id') 
     ); 

     $approval_data = array(
      'approvals' => 'one' 
     ); 

     $this->Message_model->some_approve($id, $approval_data); 

     $this->Message_model->approve($id, $data); 
     //Activity array 
     $data = array(
      'resource_id' => '', 
      'type'  => 'message', 
      'action'  => 'approved', 
      'user_id'  => $this->session->userdata('user_id'), 
      'message'  => 'Message was approved' 

     ); 
     //Insert Activity 
     $this->Activity_model->add($data); 

     //isset Message 
     $this->session->set_flashdata('success', 'Your approval was send'); 

     //Redirect 
     redirect('admin/messages'); 

    } elseif ($second_approval == null && $this->session->userdata('user_id') != $first_approval) { 

     $data = array(
      'second_approval' => $this->session->userdata('user_id') 
     ); 

     $approval_data = array(
      'approvals' => 'two' 
     ); 

     $this->Message_model->some_approve($id, $approval_data); 

     $this->Message_model->approve($id, $data); 

     //Activity array 
     $data = array(
      'resource_id' => '', 
      'type'  => 'message', 
      'action'  => 'approved', 
      'user_id'  => $this->session->userdata('user_id'), 
      'message'  => 'Message was approved' 
     ); 

     //Insert Activity 
     $this->Activity_model->add($data); 

     //isset Message 
     $this->session->set_flashdata('success', 'Your approval was send'); 

     //Redirect 
     redirect('admin/messages'); 

    } elseif ($third_approval == null && $this->session->userdata('user_id') != $second_approval && $this->session->userdata('user_id') != $first_approval) { 
     $data = array(
      'third_approval' => $this->session->userdata('user_id') 
     ); 
     $approval_data = array(
      'status' => 'Approved', 
      'approvals' => 'three' 
     ); 

     $this->Message_model->approve($id, $data); 
     $this->Message_model->some_approve($id, $approval_data); 

     //Activity array 
     $data = array(
     'resource_id' => '', 
     'type'  => 'message', 
     'action'  => 'approved', 
     'user_id'  => $this->session->userdata('user_id'), 
     'message'  => 'Message was approved' 

     ); 

     //Insert Activity 
     $this->Activity_model->add($data); 

     //isset Message 
     $this->session->set_flashdata('success', 'Your approval was send and the message has passed'); 

     //Redirect 
     redirect('admin/messages'); 

    } elseif ($third_approval == $this->session->userdata('user_id') || $this->session->userdata('user_id') == $second_approval || $this->session->userdata('user_id') == $first_approval) { 
     //isset Message 
     $this->session->set_flashdata('success', 'You already have send an approval'); 

     //Redirect 
     redirect('admin/messages'); 

    } else { 

     $approval_data = array(
      'status'  => 'Approved', 
      'approvals' => 'three' 
     ); 

     $this->Message_model->some_approve($id, $approval_data); 

     //isset Message 
     $this->session->set_flashdata('success', 'Your approval was send and the message has already been send'); 

     //Redirect 
     redirect('admin/messages'); 
    } 
} 

にデータを渡す前条件をチェックすることになっている私のコントローラ内の方法を承認しています

私のコントローラとボタンのif条件は、 Hエラーが表示されていないが、以下の条件が間違っている場合、彼らは

+0

あなたの質問にはいくつかの考えがあります:あなたはたくさんのコードを持っていて、私は本当に '<?php if($ author):?>'に止まってしまいました。なぜあなたは '$ author'に配列を格納しているのでしょうか? '$ author = $ message-> user_id == $ this-> session-> userdata( 'id')'のようなブール値ではないでしょうか?これはあなたのifで意味をなさないでしょうが、配列ではありません... –

答えて

0

まあ最初の事はあなたの必要があるとして、彼らが働いていないので、私は助けを必要と:

それはこのようなものでなければなりません

<?php if($message->user_id && $message->user_id == $this->session->userdata('id')): ?> 

HTML Data 

<?php else:?> 

HTML Data 
+0

私は変更を加えましたが、それは動作していません –

関連する問題