Commit fdfd9e7d authored by Sumesh S's avatar Sumesh S

#1 - Drupal 9 updates

parent 818fd24a
{ {
"name": "sumeshsr/zendesk",
"type": "drupal-module",
"description": "Zendesk module",
"keywords": [
"Drupal"
],
"license": "GPL-2.0+",
"minimum-stability": "dev",
"repositories": [
{
"type": "composer",
"url": "https://packages.drupal.org/8"
}
],
"require": { "require": {
"zendesk/zendesk_api_client_php": "dev-master" "zendesk/zendesk_api_client_php": "dev-master"
} }
......
<?php <?php
/**
* @file
* Contains \Drupal\zendesk\Form\ZendeskAdminForm.
*/
namespace Drupal\zendesk\Form; namespace Drupal\zendesk\Form;
use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\Core\Path\AliasManagerInterface;
use Drupal\Core\Form\ConfigFormBase; use Drupal\Core\Form\ConfigFormBase;
/** /**
...@@ -17,6 +10,13 @@ use Drupal\Core\Form\ConfigFormBase; ...@@ -17,6 +10,13 @@ use Drupal\Core\Form\ConfigFormBase;
*/ */
class ZendeskAdminForm extends ConfigFormBase { class ZendeskAdminForm extends ConfigFormBase {
/**
* {@inheritdoc}
*/
protected function getEditableConfigNames() {
return ['zendesk.settings'];
}
/** /**
* Implements \Drupal\Core\Form\FormInterface::getFormID(). * Implements \Drupal\Core\Form\FormInterface::getFormID().
*/ */
...@@ -29,72 +29,72 @@ class ZendeskAdminForm extends ConfigFormBase { ...@@ -29,72 +29,72 @@ class ZendeskAdminForm extends ConfigFormBase {
*/ */
public function buildForm(array $form, FormStateInterface $form_state) { public function buildForm(array $form, FormStateInterface $form_state) {
$config = $this->config('zendesk.settings'); $config = $this->config('zendesk.settings');
$form['zendesk']['zendesk_api'] = array( $form['zendesk']['zendesk_api'] = [
'#type' => 'fieldset', '#type' => 'fieldset',
'#title' => 'API configuration', '#title' => 'API configuration',
); ];
$form['zendesk']['zendesk_api']['zendesk_url'] = array( $form['zendesk']['zendesk_api']['zendesk_url'] = [
'#type' => 'textfield', '#type' => 'textfield',
'#required' => TRUE, '#required' => TRUE,
'#title' => t('Zendesk URL'), '#title' => t('Zendesk URL'),
'#description' => 'The url of your zendesk support page (e.g. http://yourdomain.zendesk.com).', '#description' => 'The url of your zendesk support page (e.g. http://yourdomain.zendesk.com).',
'#default_value' => $config->get('zendesk_url'), '#default_value' => $config->get('zendesk_url'),
); ];
$form['zendesk']['zendesk_api']['zendesk_subdomain'] = array( $form['zendesk']['zendesk_api']['zendesk_subdomain'] = [
'#type' => 'textfield', '#type' => 'textfield',
'#title' => t('Zendesk subdomain'), '#title' => t('Zendesk subdomain'),
'#default_value' => $config->get('zendesk_subdomain'), '#default_value' => $config->get('zendesk_subdomain'),
'#description' => t('The subdomain of your zendesk page: if your zendesk is http://subdomain.zendesk.com, then you have to fil in "subdomain".'), '#description' => t('The subdomain of your zendesk page: if your zendesk is http://subdomain.zendesk.com, then you have to fil in "subdomain".'),
); ];
$form['zendesk']['zendesk_api']['zendesk_api_token'] = array( $form['zendesk']['zendesk_api']['zendesk_api_token'] = [
'#type' => 'textfield', '#type' => 'textfield',
'#required' => TRUE, '#required' => TRUE,
'#description' => 'The zendesk API token.', '#description' => 'The zendesk API token.',
'#default_value' => $config->get('zendesk_api_token'), '#default_value' => $config->get('zendesk_api_token'),
'#suffix' => t('Use the http://www.yourdomain.com/agent/#/admin/channels page in your zendesk configuration page. (Go to Account -> Channels'), '#suffix' => t('Use the http://www.yourdomain.com/agent/#/admin/channels page in your zendesk configuration page. (Go to Account -> Channels'),
); ];
$form['zendesk']['zendesk_api']['zendesk_api_mail'] = array( $form['zendesk']['zendesk_api']['zendesk_api_mail'] = [
'#type' => 'textfield', '#type' => 'textfield',
'#title' => t('Mail address of the API user'), '#title' => t('Mail address of the API user'),
'#default_value' => $config->get('zendesk_api_mail'), '#default_value' => $config->get('zendesk_api_mail'),
'#description' => t('This is typically the mail address of the zendesk admin account'), '#description' => t('This is typically the mail address of the zendesk admin account'),
); ];
$role_options = [];
// Role-based visibility settings. // Role-based visibility settings.
foreach (user_roles() as $machine_name => $role_object) { foreach (user_roles() as $machine_name => $role_object) {
$role_options[$machine_name] = $role_object->id(); $role_options[$machine_name] = $role_object->id();
} }
$form['zendesk']['zendesk_permissions'] = array( $form['zendesk']['zendesk_permissions'] = [
'#type' => 'fieldset', '#type' => 'fieldset',
'#description' => t('Restrict access to zendesk based on user roles. These rules will apply for both user synchronization as remote authentication.'), '#description' => t('Restrict access to zendesk based on user roles. These rules will apply for both user synchronization as remote authentication.'),
); ];
$form['zendesk']['zendesk_permissions']['zendesk_roles'] = array( $form['zendesk']['zendesk_permissions']['zendesk_roles'] = [
'#type' => 'checkboxes', '#type' => 'checkboxes',
'#title' => t('Authenticate only for specific roles'), '#title' => t('Authenticate only for specific roles'),
'#default_value' => $config->get('zendesk_roles'), '#default_value' => $config->get('zendesk_roles'),
'#options' => $role_options, '#options' => $role_options,
'#description' => t('Select which roles may be authenticated for zendesk. If you select no roles, all authenticated drupal users will be authenticated for Zendesk.'), '#description' => t('Select which roles may be authenticated for zendesk. If you select no roles, all authenticated drupal users will be authenticated for Zendesk.'),
); ];
$form['zendesk']['zendesk_permissions']['zendesk_no_permission_page'] = array( $form['zendesk']['zendesk_permissions']['zendesk_no_permission_page'] = [
'#type' => 'textfield', '#type' => 'textfield',
'#title' => t('No permission page'), '#title' => t('No permission page'),
'#default_value' => $config->get('zendesk_no_permission_page'), '#default_value' => $config->get('zendesk_no_permission_page'),
'#description' => t('To what pages do you want to redirect user that have no permission to access Zendesk.'), '#description' => t('To what pages do you want to redirect user that have no permission to access Zendesk.'),
); ];
return parent::buildForm($form, $form_state); return parent::buildForm($form, $form_state);
} }
/** /**
* {@inheritdoc}c * {@inheritdoc}c.
*/ */
public function submitForm(array &$form, FormStateInterface $form_state) { public function submitForm(array &$form, FormStateInterface $form_state) {
$this->config('zendesk.settings') $this->config('zendesk.settings')
...@@ -108,5 +108,5 @@ class ZendeskAdminForm extends ConfigFormBase { ...@@ -108,5 +108,5 @@ class ZendeskAdminForm extends ConfigFormBase {
parent::submitForm($form, $form_state); parent::submitForm($form, $form_state);
} }
}
}
name: Zendesk name: Zendesk
description: "Main module that handle Zendesk's API" description: "Main module that handle Zendesk's API"
core: 8.x core_version_requirement: ^8.8 || ^9
package: Zendesk package: Zendesk
configure: admin/config/system/zendesk configure: zendesk.zendesk_admin
type: module type: module
...@@ -5,22 +5,18 @@ ...@@ -5,22 +5,18 @@
* The Zendesk module helps you to interact with zendesk using Drupal. * The Zendesk module helps you to interact with zendesk using Drupal.
*/ */
require 'vendor/autoload.php';
use Drupal\zendesk;
use Zendesk\API\Client as ZendeskAPI; use Zendesk\API\Client as ZendeskAPI;
use Drupal\user\Entity;
/** /**
* Implements hook_permission(). * Implements hook_permission().
*/ */
function zendesk_permission() { function zendesk_permission() {
return array( return [
'configure zendesk' => array( 'configure zendesk' => [
'title' => t('Configure Zendesk'), 'title' => t('Configure Zendesk'),
'description' => t('Configure Drupal settings to communicate with Zendesk.'), 'description' => t('Configure Drupal settings to communicate with Zendesk.'),
), ],
); ];
} }
/** /**
......
zendesk_admin: zendesk_admin:
path: 'admin/config/system/zendesk' path: '/admin/config/system/zendesk'
defaults: defaults:
_form: '\Drupal\zendesk\Form\ZendeskAdminForm' _form: '\Drupal\zendesk\Form\ZendeskAdminForm'
requirements: requirements:
......
...@@ -45,9 +45,9 @@ class ZendeskSSOController extends ControllerBase { ...@@ -45,9 +45,9 @@ class ZendeskSSOController extends ControllerBase {
$account = \Drupal::currentUser(); $account = \Drupal::currentUser();
$token = array( $token = array(
'jti' => sha1($account->id() . REQUEST_TIME . rand()), 'jti' => sha1($account->id() . \Drupal::time()->getRequestTime() . rand()),
'iat' => REQUEST_TIME, 'iat' => \Drupal::time()->getRequestTime(),
'name' => $account->getUsername(), 'name' => $account->getDisplayName(),
'email' => $account->getEmail(), 'email' => $account->getEmail(),
'external_id' => $account->id(), 'external_id' => $account->id(),
); );
......
name: Zendesk SSO name: Zendesk SSO
description: "Enable the Single Sing-on with Zendesk." description: "Enable the Single Sing-on with Zendesk."
core: 8.x core_version_requirement: ^8.8 || ^9
package: Zendesk package: Zendesk
configure: admin/config/system/zendesk configure: admin/config/system/zendesk
type: module type: module
dependencies: dependencies:
- zendesk - zendesk:zendesk
name: Zendesk users name: Zendesk Users
description: "Sync users with Zendesk." description: "Sync users with Zendesk."
core: 8.x core_version_requirement: ^8.8 || ^9
package: Zendesk package: Zendesk
configure: admin/config/system/zendesk configure: admin/config/system/zendesk
type: module type: module
dependencies: dependencies:
- zendesk - zendesk:zendesk
- zendesk_sso - zendesk:zendesk_sso
...@@ -9,28 +9,28 @@ ...@@ -9,28 +9,28 @@
* Implements hook_schema(). * Implements hook_schema().
*/ */
function zendesk_users_schema() { function zendesk_users_schema() {
$schema['zendesk_users'] = array( $schema['zendesk_users'] = [
'description' => "Links the drupal user ids with the zendesk user id's", 'description' => "Links the drupal user ids with the zendesk user id's",
'fields' => array( 'fields' => [
'uid' => array( 'uid' => [
'type' => 'int', 'type' => 'int',
'unsigned' => TRUE, 'unsigned' => TRUE,
'not null' => 0, 'not null' => 0,
'default' => 0, 'default' => 0,
'description' => 'Drupal user id', 'description' => 'Drupal user id',
), ],
'zid' => array( 'zid' => [
'type' => 'int', 'type' => 'int',
'unsigned' => TRUE, 'unsigned' => TRUE,
'not null' => 0, 'not null' => 0,
'default' => 0, 'default' => 0,
'description' => 'Zendesk user id', 'description' => 'Zendesk user id',
), ],
), ],
'primary_key' => array('uid', 'zid'), 'primary_key' => ['uid', 'zid'],
'indexes' => array( 'indexes' => [
'uid' => array('uid'), 'uid' => ['uid'],
), ],
); ];
return $schema; return $schema;
} }
...@@ -5,11 +5,8 @@ ...@@ -5,11 +5,8 @@
* The Zendesk module helps you to interact with zendesk using Drupal. * The Zendesk module helps you to interact with zendesk using Drupal.
*/ */
use Symfony\Component\HttpFoundation\RedirectResponse;
use Drupal\zendesk;
use Drupal\Core\Session\AccountInterface; use Drupal\Core\Session\AccountInterface;
use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Form\FormStateInterface;
use Drupal\Component\Serialization\Json;
/** /**
* Implements hook_form_FORM_ID_alter(). * Implements hook_form_FORM_ID_alter().
...@@ -17,17 +14,17 @@ use Drupal\Component\Serialization\Json; ...@@ -17,17 +14,17 @@ use Drupal\Component\Serialization\Json;
function zendesk_users_form_zendesk_admin_form_alter(array &$form, FormStateInterface $form_state) { function zendesk_users_form_zendesk_admin_form_alter(array &$form, FormStateInterface $form_state) {
$config = \Drupal::config('zendesk.settings'); $config = \Drupal::config('zendesk.settings');
$form['zendesk']['zendesk_users'] = array( $form['zendesk']['zendesk_users'] = [
'#type' => 'fieldset', '#type' => 'fieldset',
'#title' => 'Users configuration', '#title' => 'Users configuration',
); ];
$form['zendesk']['zendesk_users']['zendesk_authed_user'] = array( $form['zendesk']['zendesk_users']['zendesk_authed_user'] = [
'#type' => 'checkbox', '#type' => 'checkbox',
'#title' => t('Create user as verified users'), '#title' => t('Create user as verified users'),
'#default_value' => $config->get('zendesk_authed_user'), '#default_value' => $config->get('zendesk_authed_user'),
'#description' => t('Check this is you want to create user as already verified users.'), '#description' => t('Check this is you want to create user as already verified users.'),
); ];
// We need tu save those values. So we add our own custom submit handler. // We need tu save those values. So we add our own custom submit handler.
$form['#submit'][] = 'zendesk_admin_zendesk_users_submit'; $form['#submit'][] = 'zendesk_admin_zendesk_users_submit';
} }
...@@ -35,10 +32,10 @@ function zendesk_users_form_zendesk_admin_form_alter(array &$form, FormStateInte ...@@ -35,10 +32,10 @@ function zendesk_users_form_zendesk_admin_form_alter(array &$form, FormStateInte
/** /**
* Submit callback. * Submit callback.
* *
* @see zendesk_sso_form_zendesk_admin_form_alter(). * @see zendesk_sso_form_zendesk_admin_form_alter()
* *
* @param array $form * @param array $form
* @param FormStateInterface $form_state * @param \Drupal\Core\Form\FormStateInterface $form_state
*/ */
function zendesk_admin_zendesk_users_submit(array &$form, FormStateInterface $form_state) { function zendesk_admin_zendesk_users_submit(array &$form, FormStateInterface $form_state) {
\Drupal::config('zendesk.settings') \Drupal::config('zendesk.settings')
...@@ -61,18 +58,18 @@ function zendesk_user_insert(AccountInterface $account) { ...@@ -61,18 +58,18 @@ function zendesk_user_insert(AccountInterface $account) {
function zendesk_users_user_update(AccountInterface $account) { function zendesk_users_user_update(AccountInterface $account) {
if (Drupal::config('zendesk.settings')->get('zendesk_api_sync_users') && zendesk_user_has_access($account)) { if (Drupal::config('zendesk.settings')->get('zendesk_api_sync_users') && zendesk_user_has_access($account)) {
if ($user_id = _zendesk_users_get_user($account->id())) { if ($user_id = _zendesk_users_get_user($account->id())) {
$data = array( $data = [
'id' => $user_id, 'id' => $user_id,
'name' => $account->getUsername(), 'name' => $account->getDisplayName(),
'email' => $account->getEmail(), 'email' => $account->getEmail(),
'role' => 'end-user', 'role' => 'end-user',
); ];
// Invoke a alter call to allow other modules to pass data to ZenDesk. // Invoke a alter call to allow other modules to pass data to ZenDesk.
\Drupal::moduleHandler() \Drupal::moduleHandler()
->alter(array('zendesk_user', 'zendesk_user_update'), $data, $account); ->alter(['zendesk_user', 'zendesk_user_update'], $data, $account);
// Make the call // Make the call.
$client = zendesk_initialize_library(); $client = zendesk_initialize_library();
$client->users()->update($data); $client->users()->update($data);
} }
...@@ -85,15 +82,14 @@ function zendesk_users_user_update(AccountInterface $account) { ...@@ -85,15 +82,14 @@ function zendesk_users_user_update(AccountInterface $account) {
function zendesk_users_user_delete(AccountInterface $account) { function zendesk_users_user_delete(AccountInterface $account) {
if (Drupal::config('zendesk.settings')->get('zendesk_api_sync_users')) { if (Drupal::config('zendesk.settings')->get('zendesk_api_sync_users')) {
if ($user_id = _zendesk_users_get_user($account->id())) { if ($user_id = _zendesk_users_get_user($account->id())) {
$data = array( $data = [
'id' => $user_id, 'id' => $user_id,
'name' => $account->getUsername(), 'name' => $account->getDisplayName(),
'email' => $account->getEmail(), 'email' => $account->getEmail(),
'suspended' => TRUE, 'suspended' => TRUE,
); ];
// Alter call to omitted since we are destroying the User object. // Alter call to omitted since we are destroying the User object.
// Make the call.
// Make the call
$client = zendesk_initialize_library(); $client = zendesk_initialize_library();
$client->users()->delete($data); $client->users()->delete($data);
} }
...@@ -111,20 +107,20 @@ function zendesk_users_user_delete(AccountInterface $account) { ...@@ -111,20 +107,20 @@ function zendesk_users_user_delete(AccountInterface $account) {
*/ */
function zendesk_users_create_user(AccountInterface $account) { function zendesk_users_create_user(AccountInterface $account) {
$client = zendesk_initialize_library(); $client = zendesk_initialize_library();
$data = array( $data = [
'name' => $account->getUsername(), 'name' => $account->getDisplayName(),
'email' => $account->getEmail(), 'email' => $account->getEmail(),
'role' => 'end-user', 'role' => 'end-user',
); ];
if (\Drupal::config('zendesk.settings')->get('zendesk_authed_user')) { if (\Drupal::config('zendesk.settings')->get('zendesk_authed_user')) {
$data['user']['verified'] = TRUE; $data['user']['verified'] = TRUE;
} }
// Invoke a alter call to allow other modules to pass data to ZenDesk. // Invoke a alter call to allow other modules to pass data to ZenDesk.
\Drupal::moduleHandler() \Drupal::moduleHandler()
->alter(array('zendesk_user', 'zendesk_user_update'), $data, $account); ->alter(['zendesk_user', 'zendesk_user_update'], $data, $account);
// Make the call // Make the call.
$result = $client->users()->create($data); $result = $client->users()->create($data);
if (!empty($result->error)) { if (!empty($result->error)) {
...@@ -139,10 +135,10 @@ function zendesk_users_create_user(AccountInterface $account) { ...@@ -139,10 +135,10 @@ function zendesk_users_create_user(AccountInterface $account) {
} }
else { else {
db_insert('zendesk_users') db_insert('zendesk_users')
->fields(array( ->fields([
'uid' => $account->id(), 'uid' => $account->id(),
'zid' => $result->user->id, 'zid' => $result->user->id,
)) ])
->execute(); ->execute();
return $result->user->id; return $result->user->id;
...@@ -155,7 +151,7 @@ function zendesk_users_create_user(AccountInterface $account) { ...@@ -155,7 +151,7 @@ function zendesk_users_create_user(AccountInterface $account) {
* If a user already exist on zendesk's side but not our the drupal side, add * If a user already exist on zendesk's side but not our the drupal side, add
* it in our database. * it in our database.
* *
* @param AccountInterface $account * @param \Drupal\Core\Session\AccountInterface $account
* An object containing the user account. * An object containing the user account.
* *
* @return mixed * @return mixed
...@@ -167,10 +163,10 @@ function zendesk_users_sync_user_back(AccountInterface $account) { ...@@ -167,10 +163,10 @@ function zendesk_users_sync_user_back(AccountInterface $account) {
$result = $client->users()->search($account->getEmail()); $result = $client->users()->search($account->getEmail());
if (isset($result->users[0]->id)) { if (isset($result->users[0]->id)) {
db_insert('zendesk_users') db_insert('zendesk_users')
->fields(array( ->fields([
'uid' => $account->id(), 'uid' => $account->id(),
'zid' => $result->users[0]->id, 'zid' => $result->users[0]->id,
)) ])
->execute(); ->execute();
return $result->users[0]->id; return $result->users[0]->id;
...@@ -185,7 +181,7 @@ function zendesk_users_sync_user_back(AccountInterface $account) { ...@@ -185,7 +181,7 @@ function zendesk_users_sync_user_back(AccountInterface $account) {
*/ */
function _zendesk_users_get_user($uid) { function _zendesk_users_get_user($uid) {
$result = db_select('zendesk_users', 'zu') $result = db_select('zendesk_users', 'zu')
->fields('zu', array('uid', 'zid')) ->fields('zu', ['uid', 'zid'])
->condition('zu.uid', $uid, '=') ->condition('zu.uid', $uid, '=')
->execute(); ->execute();
if ($result->rowCount() <> 0) { if ($result->rowCount() <> 0) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment