| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 | <?phpfunction cobaltnodes_init() {  if (user_access('use cobalt')) {    drupal_add_js(drupal_get_path('module', 'cobalt') . '/js/cobalt.nodes.js');    // Add the current node nid as a javascript setting    if (arg(0)=='node' && is_numeric(arg(1))) {      drupal_add_js(array('cobalt' => array('nodes_current' => arg(1))), 'setting');    }  }}function cobaltnodes_menu() {  $items = array();  $items['cobalt/data/nodes_update/%'] = array(    'title' => 'Serialized nodes',    'page callback' => 'cobaltnodes_json',    'page arguments' => array('update', 3),    'access arguments' => array('use cobalt'),    'type' => MENU_CALLBACK,  );  $items['cobalt/data/nodes_single/%'] = array(    'title' => 'Serialized node',    'page callback' => 'cobaltnodes_json',    'page arguments' => array('single', 3),    'access arguments' => array('use cobalt'),    'type' => MENU_CALLBACK,  );  return $items;}function cobaltnodes_cron() {  // Delete logged deletions older than two weeks  db_query("DELETE FROM {cobalt_node_deletion} WHERE deleted<:time_ago", array(    ':time_ago' => time() - 86400*14,  ));}function cobaltnodes_node_delete($node) {  db_query("INSERT INTO {cobalt_node_deletion}(nid, deleted) VALUES(:nid, :deleted)", array(    ':nid' => $node->nid,     ':deleted' => time()+60*1, // Add a minute for margin  ));}function cobaltnodes_json($op, $value) {  $result = array();  // We're skipping the status check on purpose. As we check with the node_access  // function later this allows administrators to access unpublished nodes.  if ($op=='update') {    $res = db_query("SELECT n.nid, n.title, n.type, n.uid, n.status      FROM {node} n      WHERE created > :since OR changed > :since      ORDER BY created DESC      LIMIT 100", array(        ':since' => $value,      ));  }  else if ($op=='single') {    $res = db_query("SELECT nid, title, type, uid, status FROM {node}      WHERE nid = :nid", array(        ':nid' => $value,      ));  }  $nodes = array();  $access_types = array(    'r' => 'view',    'w' => 'update',    'd' => 'delete',  );  foreach ($res as $node) {    $access = '';    foreach ($access_types as $key => $permission) {      if (node_access($permission, $node)) {        $access .= $key;      }    }    if (!empty($access)) {      $nodes[] = array($node->nid, $node->title, $access);    }  }  $result['nodes'] = $nodes;  if ($op=='update') {    $deleted = array();    // Get deletions    $res = db_query("SELECT nid FROM {cobalt_node_deletion} WHERE deleted>:since", array(      ':since' => $value,    ));    foreach ($res as $node) {      $deleted[] = $node->nid;    }    $result['deleted'] = $deleted;  }  print drupal_json_output($result);  exit;}
 |