2016-10-27 17 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) 
{ 
    $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'); 
    } 
} 

下面的方法之前检查条件正在

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); 
} 

如果我的控制器和按钮的条件是那些h I类需要帮助的,因为没有显示任何错误,但他们没有工作,他们应该

+0

对你的问题有几点想法:你有很多代码,我真的停止在<?php if($ author):?>'上。你可能应该告诉我们当你写这个时你在想什么,因为你为什么要在'$ author'上存储一个数组。它不应该是一个布尔,就像'$ author = $ message-> user_id == $ this-> session-> userdata('id')'?这将有助于你的ifs,但不是一个数组... –

回答

0

那么第一件事你如果下面的条件是错误的:

应该是这样的:

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

HTML Data 

<?php else:?> 

HTML Data 
+0

我已经做了更改,但它不工作 –

相关问题