You are here

function _nodesymlinks_nodeapi_validate in NodeSymlinks 6

Same name and namespace in other branches
  1. 7 nodesymlinks.inc \_nodesymlinks_nodeapi_validate()

Implementation of hook_nodeapi() OP: Insert & Update.

See also

nodesymlinks_nodeapi()

1 call to _nodesymlinks_nodeapi_validate()
nodesymlinks_nodeapi in ./nodesymlinks.module
Implementation of hook_nodeapi().

File

./nodesymlinks.inc, line 40

Code

function _nodesymlinks_nodeapi_validate(&$node, $op) {

  // check if aliases are unique
  if (module_exists('path') && isset($node->menu['nodesymlinks']) && !empty($node->menu['nodesymlinks']['items'])) {
    $items = (array) $node->menu['nodesymlinks']['items'];
    $language = isset($node->language) ? $node->language : '';
    $unique_paths = array();
    if (variable_get('nodesymlinks_check_menuitem', 1) && empty($node->menu['link_title']) && count($items)) {
      form_set_error('menu][link_title', t('You have some nodesymlinks defined but primary node menu item is empty. Please create node menu item first.'));
    }
    foreach ($items as $i => &$item) {
      $item['alias']['path'] = $path = trim($item['alias']['path']);
      if (!empty($item['alias']['path'])) {

        // Check if paths are unique in this form.
        if (in_array($path, $unique_paths)) {
          form_set_error("menu][nodesymlinks][items][{$i}][alias][path", t('The path is already in use.'));
        }
        else {
          $unique_paths[] = $path;
        }
        if (module_exists('pathauto')) {

          // Check if the path is not empty when pathauto is switched off.
          if (empty($item['alias']['pathauto']) && empty($item['alias']['path'])) {
            form_set_error("menu][nodesymlinks][items][{$i}][alias][path", t('The path is empty.'));
          }
          else {
            $system_path = nodesymlinks_create_item_path($item, $node);
            if (db_result(db_query("SELECT COUNT(dst) FROM {url_alias} WHERE dst = '%s' AND src != '%s' AND language = '%s'", $path, $system_path, $language))) {
              form_set_error("menu][nodesymlinks][items][{$i}][alias][path", t('The path is already in use.'));
            }
          }
        }
        elseif (!empty($item['alias']['path'])) {
          $system_path = nodesymlinks_create_item_path($item, $node);
          if (db_result(db_query("SELECT COUNT(dst) FROM {url_alias} WHERE dst = '%s' AND src != '%s' AND language = '%s'", $path, $system_path, $language))) {
            form_set_error("menu][nodesymlinks][items][{$i}][alias][path", t('The path is already in use.'));
          }
        }
      }
    }
  }
}