Page MenuHomeGRNET

grnet_core.module
No OneTemporary

File Metadata

Created
Thu, Feb 20, 1:34 PM

grnet_core.module

<?php
function grnet_core_menu() {
$items['admin/config/grnet'] = array(
'title' => 'grnet Settings',
'description' => 'grnet Settings',
'position' => 'right',
'page callback' => 'system_admin_menu_block_page',
'access arguments' => array('access administration pages'),
'file' => 'system.admin.inc',
'file path' => drupal_get_path('module', 'system')
);
$items['admin/config/grnet/global'] = array(
'title' => 'grnet Global settings',
'description' => 'Configure grnet Global Settings',
'page callback' => 'drupal_get_form',
'page arguments' => array('grnet_core_admin_settings'),
'access arguments' => array('administer cas'),
'type' => MENU_NORMAL_ITEM,
'file' => 'grnet_core.admin.inc',
);
$items['admin/config/grnet/global/settings'] = array(
'title' => 'grnet Global Settings',
'type' => MENU_DEFAULT_LOCAL_TASK,
'weight' => -10,
);
return $items;
}
function grnet_core_convert($text, $revert=NULL){
$text_array = array(
"_none" => "- Κανένα -",
"medical" => "Ιατρικό",
"nursery" => "Νοσηλευτικό",
"administrative" => "Διοικητικό",
"esy_doctors" => "Γιατροί ΕΣΥ",
"academics" => "Πανεπιστημιακοί Γιατροί",
"other" => "Άλλοι Επιστήμονες",
"iatr_tmimata_monades_ana_tomea" => "Τμήματα / Μονάδες ανά Τομέα",
"iatr_tmimata_diatomeakou_epipedou" => "Τμήματα Διατομεακού Επιπέδου",
"iatr_epikourika_loipa" => "Επικουρικά / Λοιπά",
);
if($revert){
return array_search($text, $text_array);
}else{
return $text_array[$text];
}
}
function grnet_core_create_schGrAcPersonID($uid){
$schGrAcPersonID = strtoupper($uid);
while( strlen($schGrAcPersonID)<22 ){
$schGrAcPersonID .= '0';
}
return $schGrAcPersonID;
}
function grnet_core_get_term_by_rdn($rdn){
$temp = str_replace('uniqueIdentifier=','',$rdn);
$temp_array = explode(',ou' , $temp);
$tid=$temp_array[0];
if($tid>0){
$term = taxonomy_term_load($tid);
}
return $term;
}
function grnet_core_conver_dias_roles($tid){
$term = taxonomy_term_load($tid);
$result = $term->field_entitlement;
return $result['und']['0']['value'];
}
function grnet_core_conver_dias_roles_revert_to_tid($ldap_dias_roles_entitlment){
$tid = db_query("SELECT tid FROM field_data_field_entitlement as fdfe JOIN taxonomy_term_data AS ttt on ttt.tid=fdfe.entity_id where fdfe.field_entitlement_value=:entitlement",
array(':entitlement' => $ldap_dias_roles_entitlment))->fetchField();
return $tid;
}
function grnet_core_get_backend_name($tid){
$term_name = db_query("SELECT field_backend_name_value FROM {field_data_field_backend_name} WHERE entity_id=:entity_id",array(':entity_id' => $tid))->fetchField();
return $term_name;
}
function grnet_core_user_has_role($rolename){
global $user;
$current_user = user_load($user->uid);
if(array_search($rolename,$current_user->roles)){
return TRUE;
}else{
return FALSE;
}
}
function grnet_core_entity_has_changed($entity_loaded, $entity_presave){
if($entity_loaded->field_ldapregistr_name['und'][0]['value'] <> $entity_presave->field_ldapregistr_name['und'][0]['value']){
return TRUE;
}elseif($entity_loaded->field_ldapregistr_surname['und'][0]['value'] <> $entity_presave->field_ldapregistr_surname['und'][0]['value']){
return TRUE;
}elseif($entity_loaded->field_ldapregistr_amka['und'][0]['value'] <> $entity_presave->field_ldapregistr_amka['und'][0]['value']){
return TRUE;
}elseif($entity_loaded->field_ldapregistr_email['und'][0]['email'] <> $entity_presave->field_ldapregistr_email['und'][0]['email']){
return TRUE;
}elseif($entity_loaded->field_ldapregistr_phone['und'][0]['value'] <> $entity_presave->field_ldapregistr_phone['und'][0]['value']){
return TRUE;
}elseif($entity_loaded->field_ldapregistr_mobile['und'][0]['value'] <> $entity_presave->field_ldapregistr_mobile['und'][0]['value']){
return TRUE;
}elseif($entity_loaded->field_ldapregistr_personel_categ['und'][0]['value'] <> $entity_presave->field_ldapregistr_personel_categ['und'][0]['value']){
return TRUE;
}elseif($entity_loaded->field_ldapregistr_dicom['und'][0]['value'] <> $entity_presave->field_ldapregistr_dicom['und'][0]['value']){
return TRUE;
}elseif($entity_loaded->field_ldapregistr_personel_type['und'][0]['value'] <> $entity_presave->field_ldapregistr_personel_type['und'][0]['value']){
return TRUE;
}elseif($entity_loaded->field_ldapregistr_speciality['und'][0]['tid'] <> $entity_presave->field_ldapregistr_speciality['und'][0]['tid']){
return TRUE;
}elseif($entity_loaded->field_ldapregistr_iatr_top_mon['und'][0]['value'] <> $entity_presave->field_ldapregistr_iatr_top_mon['und'][0]['value']){
return TRUE;
}elseif($entity_loaded->field_ldapregistr_tmim_mon_tomea['und'][0]['tid'] <> $entity_presave->field_ldapregistr_tmim_mon_tomea['und'][0]['tid']){
return TRUE;
}elseif($entity_loaded->field_ldapregistr_epikour_loipa['und'][0]['tid'] <> $entity_presave->field_ldapregistr_epikour_loipa['und'][0]['tid']){
return TRUE;
}elseif($entity_loaded->field_ldapregistr_iatr_proist['und'][0]['value'] <> $entity_presave->field_ldapregistr_iatr_proist['und'][0]['value']){
return TRUE;
}elseif($entity_loaded->field_ldapregistr_dioik_tmimgraf['und'][0]['tid'] <> $entity_presave->field_ldapregistr_dioik_tmimgraf['und'][0]['tid']){
return TRUE;
}elseif($entity_loaded->field_ldapregistr_admin_proist['und'][0]['value'] <> $entity_presave->field_ldapregistr_admin_proist['und'][0]['value']){
return TRUE;
}elseif($entity_loaded->field_ldapregistr_dias_roles['und'][0]['tid'] <> $entity_presave->field_ldapregistr_dias_roles['und'][0]['tid']){
return TRUE;
}else{
return FALSE;
}
}
function grnet_core_entity_load($entities, $type) {
foreach ($entities as $entity) {
if(arg(0)=='entityform' && arg(2)=='edit' && $type=='entityform'){
$_SESSION['grnet']['ldapregistration'][$entity->entityform_id] = $entity;
}
if($type=='entityform'){
}
}
}
function grnet_core_get_username_by_entity_id($entity_id){
$username = db_query("SELECT field_ldapregistr_username_value as username FROM {field_data_field_ldapregistr_username} WHERE entity_id=:entity_id",array(':entity_id' => $entity_id))->fetchField();
return $username;
}
function grnet_core_get_entity_id_by_username($username){
$entity_id = db_query("SELECT entity_id FROM {field_data_field_ldapregistr_username} WHERE field_ldapregistr_username_value=:username",array(':username' => $username))->fetchField();
return $entity_id;
}
function grnet_core_get_entity_id_by_secretkey($secretkey){
$entity_id = db_query("SELECT entity_id FROM {field_data_field_ldapregistr_secretkey} WHERE field_ldapregistr_secretkey_value=:secretkey",array(':secretkey' => $secretkey))->fetchField();
return $entity_id;
}
function grnet_core_get_ldapinfo_user(){
$default_username = 'anonymous';
global $user;
if($_SESSION['phpCAS']['user']<>''){
$username = $_SESSION['phpCAS']['user'];
}elseif(grnet_core_user_has_role('manager')){
if(arg(0)=='requests' && arg(1)=='view' && arg(2)>0){
$username = grnet_core_get_username_by_entity_id(arg(2));
}elseif(arg(0)=='entityform' && arg(2)=='edit' && arg(1)>0){
$username = grnet_core_get_username_by_entity_id(arg(1));
}
}else{
$username = $default_username;
}
return $username;
}
function grnet_core_get_ldapuser_hidden_message(){
if($_SESSION['phpCAS']['user']<>''){
$entity_id = grnet_core_get_entity_id_by_username($_SESSION['phpCAS']['user']);
$entity_instance = entity_load('entityform', array($entity_id));
$entity_instance = $entity_instance[$entity_id];
$hidden_message = $entity_instance->field_ldapregistr_hidden_message['und']['0']['value'];
if($hidden_message<>''){
if(strpos($hidden_message, 'απορρίφθηκε') !== false){
drupal_set_message($hidden_message, 'warning');
}else{
drupal_set_message($hidden_message);
}
$entity_instance->field_ldapregistr_hidden_message['und']['0']['value']= '';
$entity_instance->save();
}
}
}
function grnet_core_sync_ldapuser_submission_ownership(){
if($_SESSION['phpCAS']['user']<>''){
global $user;
if($user->field_submission_ownership_sync['und']['0']['value']<>1){
$entity_id = grnet_core_get_entity_id_by_username($_SESSION['phpCAS']['user']);
$entity_instance = entity_load('entityform', array($entity_id));
$entity_instance = $entity_instance[$entity_id];
if($entity_id==''){
drupal_set_message('Δεν βρέθηκε ανώνυμη υποβολή με το username με το οποίο εισήλθατε στο σύστημα μέσω CAS!!' , 'error');
}else{
$entity_instance->uid = $user->uid;
$entity_instance->save();
$edit = array(
'field_submission_ownership_sync' => array(
'und' => array(
0 => array(
'value' => 1,
),
),
),
);
user_save($account, $edit);
drupal_set_message('Η ανώνυμη υποβολή σας, συγχρονίστηκε με τον λογαριασμό σας.');
}
}else{
}
}
}
function grnet_core_get_manager_contact_info(){
$output = '';
if(variable_get('grnet_manager_contact_info_name_surname')<>''){
$output .= variable_get('grnet_manager_contact_info_name_surname');
$output .= '<br>';
}
if(variable_get('grnet_manager_contact_info_phone')<>''){
$output .= variable_get('grnet_manager_contact_info_phone');
$output .= '<br>';
}
if(variable_get('grnet_manager_contact_info_mobile')<>''){
$output .= variable_get('grnet_manager_contact_info_mobile');
$output .= '<br>';
}
if(variable_get('grnet_manager_contact_info_address')<>''){
$output .= variable_get('grnet_manager_contact_info_address');
$output .= '<br>';
}
if(variable_get('grnet_manager_contact_info_email')<>''){
$output .= variable_get('grnet_manager_contact_info_email');
$output .= '<br>';
}
if(variable_get('grnet_manager_contact_info_other')<>''){
$output .= variable_get('grnet_manager_contact_info_other');
$output .= '<br>';
}
return $output;
}
function grnet_core_isEmailValidDueToDomainSuffixedPolicy($email){
if(variable_get('grnet_limit_domain_suffixed_emails')==0){
return true;
}else{
if(_endsWith($email, '@'.variable_get('grnet_domain_suffixed_emails'))){
return true;
}else{
return false;
}
}
}
function _endsWith($haystack, $needle)
{
$length = strlen($needle);
if ($length == 0) {
return true;
}
return (substr($haystack, -$length) === $needle);
}
function grnet_core_validateAMKA($amka) {
if(!preg_match('/^\d{11}$/' , $amka) || $amka == '000000000'){
return false;
}
$iSum = 0;
for ($i=1; $i <= strlen($amka); $i++) {
$iDigit = intval($amka[$i-1], 10);
if ($i % 2 === 0) {
$iDigit *= 2;
if ($iDigit > 9) {
$iDigit -= 9;
}
}
$iSum += $iDigit;
}
return ($iSum % 10 === 0);
}

Event Timeline