You are here

vimeo_video_uploader.module in Vimeo Video Uploader 7.2

File

vimeo_video_uploader.module
View source
<?php

/**
 * @file
 * Module file for the Vimeo Video Uploader.
 */
$lib_path = libraries_get_path('vimeo-lib-api');
require_once $lib_path . '/autoload.php';
use Vimeo\Vimeo;
use Vimeo\Exceptions\VimeoUploadException;

/**
 * Implements hook_help().
 */
function vimeo_video_uploader_help($path, $arg) {
  switch ($path) {
    case 'admin/help#vimeo_video_uploader':
      return t("Visit !documentation for instructions", array(
        '!documentation' => l(t('Documentation'), 'https://www.drupal.org/node/2726121'),
      ));
  }
}

/**
 * Implements hook_permission().
 */
function vimeo_video_uploader_permission() {
  return array(
    'access vimeo uploader' => array(
      'title' => t('Administer Vimeo Video Uploader'),
    ),
  );
}

/**
 * Implements hook_menu().
 */
function vimeo_video_uploader_menu() {
  $items = array();
  $items['admin/config/media/vimeo_video_uploader'] = array(
    'title' => 'Vimeo Auth Configuration',
    'description' => 'vimeo authorization',
    'page callback' => 'drupal_get_form',
    'page arguments' => array(
      'vimeo_video_uploader_admin_form',
    ),
    'access arguments' => array(
      'access vimeo uploader',
    ),
    'file' => 'vimeo_video_uploader.inc',
  );
  return $items;
}

/**
 * Implements hook_node_presave().
 */
function vimeo_video_uploader_node_presave($node) {
  $client_id = variable_get('vimeo_video_uploader_client_id');
  $client_secret = variable_get('vimeo_video_uploader_client_secret');
  $access_token = variable_get('vimeo_video_uploader_access_token');

  // Checking the file is selected to upload.
  if (!empty($node->field_vimeo_file_browse[LANGUAGE_NONE])) {
    if ($node->type == variable_get('vimeo_video_uploader_content_type_select') && empty($node->nid)) {
      try {
        $file = file_load($node->field_vimeo_file_browse[LANGUAGE_NONE][0]["fid"]);
        $lib = new Vimeo($client_id, $client_secret, $access_token);
        $video_id_link = $lib
          ->upload(drupal_realpath($file->uri));
        $video_id = substr($video_id_link, 8);
        if ($video_id) {
          $video_title = $node->title;
          $video_desc = isset($node->body[LANGUAGE_NONE][0]) ? $node->body[LANGUAGE_NONE][0]["value"] : '';
          $lib
            ->request('/videos/' . $video_id, array(
            'name' => $video_title,
          ), 'PATCH');
          $lib
            ->request('/videos/' . $video_id, array(
            'description' => $video_desc,
          ), 'PATCH');
          $video_url = 'http://vimeo.com/' . $video_id;
          $node->field_embeddedvideo[LANGUAGE_NONE][0]["video_url"] = $video_url;
          $node->field_embeddedvideo[LANGUAGE_NONE][0]["description"] = $video_desc;
        }
        file_delete($file);
      } catch (VimeoUploadException $e) {
        drupal_set_message(t('Not Authorized...! Please check your Auth information and login to your vimeo account.'), 'error');
        drupal_goto('node/add');
        drupal_exit();
      }
    }
    elseif ($node->type == variable_get('vimeo_video_uploader_content_type_select') && !empty($node->nid)) {
      try {
        $file = file_load($node->field_vimeo_file_browse[LANGUAGE_NONE][0]["fid"]);
        $lib = new Vimeo($client_id, $client_secret, $access_token);
        $video_id_ = substr($node->original->field_embeddedvideo[LANGUAGE_NONE][0]["video_url"], 17);
        $lib
          ->request('/videos/' . $video_id_, array(), 'DELETE');
        $video_id_link = $lib
          ->upload(drupal_realpath($file->uri));
        $video_id = substr($video_id_link, 8);
        $video_title = $node->title;
        $video_desc = isset($node->body[LANGUAGE_NONE][0]) ? $node->body[LANGUAGE_NONE][0]["value"] : '';
        $lib
          ->request('/videos/' . $video_id, array(
          'name' => $video_title,
        ), 'PATCH');
        $lib
          ->request('/videos/' . $video_id, array(
          'description' => $video_desc,
        ), 'PATCH');
        $video_url = 'http://vimeo.com/' . $video_id;
        $node->field_embeddedvideo[LANGUAGE_NONE][0]["video_url"] = $video_url;
        $node->field_embeddedvideo[LANGUAGE_NONE][0]["description"] = $video_desc;
        file_delete($file);
      } catch (VimeoUploadException $e) {
        drupal_set_message(t('Not Authorized...! Please check your Auth information and login to your vimeo account.'), 'error');
        drupal_goto('node/add');
        drupal_exit();
      }
    }
  }
  elseif ($node->type == variable_get('vimeo_video_uploader_content_type_select') && !empty($node->nid) && empty($node->field_vimeo_file_browse[LANGUAGE_NONE])) {
    try {
      $lib = new Vimeo($client_id, $client_secret, $access_token);
      $video_id = substr($node->field_embeddedvideo[LANGUAGE_NONE][0]["video_url"], 17);
      $video_title = $node->title;
      $video_desc = isset($node->body[LANGUAGE_NONE][0]) ? $node->body[LANGUAGE_NONE][0]["value"] : '';
      $lib
        ->request('/videos/' . $video_id, array(
        'name' => $video_title,
      ), 'PATCH');
      $lib
        ->request('/videos/' . $video_id, array(
        'description' => $video_desc,
      ), 'PATCH');
    } catch (VimeoUploadException $e) {
      drupal_set_message(t('Not Authorized...! Please check your Auth information and login to your vimeo account.'), 'error');
      drupal_goto('node/add');
      drupal_exit();
    }
  }
}

/**
 * Implements hook_node_delete().
 */
function vimeo_video_uploader_node_delete($node) {
  if ($node->type == variable_get('vimeo_video_uploader_content_type_select') && !empty($node->nid)) {
    $video_id_val = substr($node->field_embeddedvideo[LANGUAGE_NONE][0]["video_url"], 17);
    if (!empty($video_id_val)) {
      $client_id = variable_get('vimeo_video_uploader_client_id');
      $client_secret = variable_get('vimeo_video_uploader_client_secret');
      $access_token = variable_get('vimeo_video_uploader_access_token');
      $video_id_ = substr($node->field_embeddedvideo[LANGUAGE_NONE][0]["video_url"], 17);
      $lib_ = new Vimeo($client_id, $client_secret, $access_token);
      try {
        $lib_
          ->request('/videos/' . $video_id_, array(), 'DELETE');
      } catch (VimeoUploadException $e) {
        drupal_goto('admin/content');
        drupal_exit();
      }
    }
  }
}

/**
 * Implements hook_form_alter().
 */
function vimeo_video_uploader_form_alter(&$form, &$form_state, $form_id) {
  if ($form_id == variable_get('vimeo_video_uploader_content_type_select') . "_node_form") {
    $css = "#edit-field-embeddedvideo, #edit-field-vimeo-file-browse #edit-field-vimeo-file-browse-und-0-upload-button { display: none; }";
    drupal_add_css($css, 'inline');
  }
}