123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222 |
- <?php
- /**
- * Implements hook_permission().
- */
- function materio_admin_permission() {
- return array(
- 'access default users list' => array(
- 'title' => t('Access default users list'),
- 'description' => t('Access default users list.'),
- ),
- 'access default UC roles expiration list' => array(
- 'title' => t('access default UC roles expiration list'),
- 'description' => t('access default UC roles expiration list.'),
- ),
- 'access duplicate mails list' => array(
- 'title' => t('access duplicate mails list'),
- 'description' => t('access duplicate mails list.'),
- ),
- );
- }
- /**
- * Implements hook_menu().
- */
- function materio_admin_menu() {
- $items['admin/users/duplicatemails'] = array(
- 'title' => "Duplicate mails",
- 'page callback' => 'materio_duplicatemails',
- 'access callback' => 'user_access',
- 'access arguments' => array('access duplicate mails list'),
- 'type' => MENU_LOCAL_TASK
- );
- if(module_exists('simplenews')){
- $cats = simplenews_category_list();
- // dsm($cats, 'cats');
- foreach ($cats as $tid => $name) {
- // $items['node/%node/simplenews'] = array(
- // 'title' => 'Newsletter',
- // 'type' => MENU_LOCAL_TASK,
- // 'access callback' => 'simplenews_node_tab_access',
- // 'access arguments' => array(1),
- // 'page callback' => 'simplenews_node_tab_page',
- // 'page arguments' => array(1),
- // 'context' => MENU_LOCAL_TASK,
- // 'file' => 'includes/simplenews.admin.inc',
- // 'weight' => 2,
- // );
- $items['node/add/simplenews/'.$tid] = array(
- 'title' => $name,
- 'title callback' => 'check_plain',
- 'page callback' => 'node_add',
- 'page arguments' => array('simplenews'),
- 'access callback' => 'node_access',
- 'access arguments' => array('create', 'simplenews'),
- 'file path' => drupal_get_path('module', 'node'),
- 'file' => 'node.pages.inc',
- );
- }
- }
- return $items;
- }
- function materio_duplicatemails(){
- $mails = db_query('SELECT mail FROM {users} GROUP BY mail HAVING count(mail) > 1')->fetchCol();
- // Bail out early if there are no duplicates.
- if (!$mails) {
- return t('All accounts have unique email addresses.');
- }
- // Grab all the user data for accounts with addresses identified as
- // duplicates. This is a little convoluted, but it lets us grab all the user
- // data in one shot.
- $uids = db_select('users', 'u')
- ->fields('u', array('uid'))
- ->condition('mail', $mails, 'IN')
- ->orderBy('access', 'DESC')
- ->execute()
- ->fetchCol();
- $duplicate_users = user_load_multiple($uids);
- $duplicate_mails = array();
- foreach ($duplicate_users as $duplicate_user) {
- $duplicate_mails[$duplicate_user->mail][] = $duplicate_user;
- }
- // Turn the data we've got into markup.
- $output = t('Accounts with duplicate email address:') . '<br />';
- $output = "<ul>";
- foreach ($duplicate_mails as $mail => $users) {
- $output .= "<li> <strong>$mail</strong> : <br />";
- $accounts = array();
- foreach ($users as $duplicate_user) {
- $accounts[] = l($duplicate_user->name, "user/{$duplicate_user->uid}") . ' ('. date('Y-m-d', $duplicate_user->access) .')';
- }
- $output .= implode(', ', $accounts);
- $output .= '</li>';
- }
- $output .= "</ul>";
- return $output;
- }
- /**
- * Implements hook_menu_alter().
- */
- function materio_admin_menu_alter(&$items){
- // dsm($items, 'menu alter items');
- if(isset($items['admin/people'])){
- $items['admin/people']['access arguments'] = array('access default users list');
- // dsm($items['admin/people']);
- }
- if(isset($items['admin/people/expiration'])){
- $items['admin/people/expiration']['access arguments'] = array('access default UC roles expiration list');
- // dsm($items['admin/people/expiration']);
- }
- # deactivate default home page
- $items['node']['access callback'] = FALSE;
- // if(isset($items['admin/content/add/simplenews'])){
- // delete($items['admin/content/add/simplenews']);
- // $cats = simplenews_category_list();
- // dsm($cats, 'cats');
- // foreach ($cats as $tid => $name) {
- // $items['admin/content/add/simplenews/'.$tid]
- // }
- // }
- }
- /**
- * Implements hook_menu_local_tasks_alter().
- */
- function materio_admin_menu_local_tasks_alter(&$data, $router_item, $root_path) {
- if ($root_path == 'admin/people/simplenews') {
- $item = menu_get_item('admin/content/simplenews');
- if ($item['access']) {
- $item['title'] = 'Go to '.$item['title'];
- $data['actions']['output'][] = array(
- '#theme' => 'menu_local_task',
- '#link' => $item,
- );
- }
- }
- if ($root_path == 'admin/content/simplenews') {
- $cats = simplenews_category_list();
- foreach ($cats as $tid => $name) {
- $item = menu_get_item('node/add/simplenews/'.$tid);
- $item['title'] = 'Add new '.$name;
- if ($item['access']) {
- $data['actions']['output'][] = array(
- '#theme' => 'menu_local_task',
- '#link' => $item,
- );
- }
- }
- $item = menu_get_item('admin/people/simplenews');
- if ($item['access']) {
- $item['title'] = 'Go to '.$item['title'];
- $data['actions']['output'][] = array(
- '#theme' => 'menu_local_task',
- '#link' => $item,
- );
- }
- }
- }
- /**
- * Implements hook_form_alter().
- */
- function materio_admin_form_simplenews_node_form_alter(&$form, &$form_state, $form_id) {
- // dsm($form_id, '$form_id');
- // dsm($form_state, '$form_state');
- // dsm($form, '$form');
- // dsm($_GET, 'GET');
- if(!$form['nid']['#value']){
- $cats = simplenews_category_list();
- $cats_tids = array_keys($cats);
- $q = parse_url($_GET['q']);
- $cat = array_pop(explode('/', $q['path']));
- // dsm($cat, 'cat');
- if(in_array($cat, $cats_tids)){
- // prepopulate type of news
- $form['field_simplenews_term']['und']['#default_value'] = $cat;
- $form['field_simplenews_term']['und']['#disabled'] = true;
- // change default template regarding type of news
- $form['body']['und'][0]['#default_value'] = materio_admin_getSimplenewsNodeBodyTemplate($cat);
- }
- }else{
- $form['field_simplenews_term']['und']['#disabled'] = true;
- }
- $form['body']['und'][0]['#rows'] = 50;
- }
- function materio_admin_getSimplenewsNodeBodyTemplate($cat){
- return file_get_contents(drupal_get_path('module', 'materio_admin').'/templates/simplenews_'.$cat.'_node.html');
- }
- // http://stackoverflow.com/questions/19202449/change-drupal-7-compiled-css-and-js-includes-to-use-https-as-opposed-to-http
- function materio_admin_process_html(&$vars){
- foreach (array('head', 'styles', 'scripts') as $replace) {
- if (!isset($vars[$replace])) {
- continue;
- }
- $vars[$replace] = preg_replace('/(src|href|@import )(url\(|=)(")http(s?):/', '$1$2$3', $vars[$replace]);
- }
- }
|