You are here

function support_reference_block_form_submit in Support Ticketing System 6

Same name and namespace in other branches
  1. 7 support_reference/support_reference.module \support_reference_block_form_submit()

File

support_reference/support_reference.module, line 115
Support ticket references.

Code

function support_reference_block_form_submit($form, &$form_state) {
  $nid = $form['#nid'];
  $node = node_load($nid);
  $client = support_client_load($node->client);

  // Make sure the user is allowed to do this.
  if (user_access('edit support ticket references') && support_access_clients($client)) {
    $match = array();
    if (preg_match_all('/\\[#(\\d+)\\]/', $form_state['values']['reference'], $match)) {
      foreach ($match[1] as $rnid) {
        $rnode = node_load($rnid);
        $rclient = support_client_load($rnode->client);

        // Additional access control check to ignore messing with any references
        // to tickets belonging to clients that the user doesn't have access to.
        if (support_access_clients($rclient)) {

          // If it already exists, delete instead.
          if (db_result(db_query('SELECT 1 FROM {support_reference} WHERE nid = %d AND rnid = %d', $nid, $rnid))) {
            db_query('DELETE FROM {support_reference} WHERE nid = %d AND rnid = %d', $nid, $rnid);
            db_query('DELETE FROM {support_reference} WHERE nid = %d AND rnid = %d', $rnid, $nid);
          }
          else {
            db_query('INSERT INTO {support_reference} (nid, rnid) VALUES (%d, %d)', $nid, $rnid);
            db_query('INSERT INTO {support_reference} (nid, rnid) VALUES (%d, %d)', $rnid, $nid);
          }
        }
      }
    }
  }
}