~ihris+uganda/ihris-uganda/ahpc-qualify-41

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
<?php

/**
 * The best way to run this is:
 * php import_qualification_ug.php 2> convert.log
 * There's lots of notice messages you probably want to ignore for the most
 * part.
 * You'll need to change the include file to find the right config file
 * as well as the path to I2CE which may not work right using the one
 * from the config file.
 * The ID for the User object should be valid in your user table.
 * The $forms array is an associative array with the value being
 * an array of forms that are required for the given form to work e.g. 
 * region needs country first since it uses country as a map for a field.
 *
 * 
 *
 */
 global $dictionary;
$dictionary = array();
 
 
define( 'iHRIS_DEFAULT_COUNTRY', 'Uganda' );

define( 'iHRIS_QUALIFICATION', 1 );
define( 'iHRIS_ACADEMIC_LEVEL', 0 );



 $i2ce_site_user_access_init = null;
$script = array_shift( $argv );
if (file_exists(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'pages/local' . DIRECTORY_SEPARATOR . 'config.values.php')) {
	require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'pages/local' . DIRECTORY_SEPARATOR . 'config.values.php');
} else {
	require_once( dirname(__FILE__) . DIRECTORY_SEPARATOR . 'pages/config.values.php');
}

$i2ce_site_i2ce_path = "/var/lib/iHRIS/4.0.23/I2CE";

require_once ($i2ce_site_i2ce_path . DIRECTORY_SEPARATOR . 'I2CE_config.inc.php');

@I2CE::initializeDSN($i2ce_site_dsn,   $i2ce_site_user_access_init,    $i2ce_site_module_config);

unset($i2ce_site_user_access_init);
unset($i2ce_site_dsn);
unset($i2ce_site_i2ce_path);
unset($i2ce_site_module_config);


global $user;

$user = new I2CE_User(1, false, false, false);
$db = MDB2::singleton();
if ( PEAR::isError( $db ) ) {
	die( $db->getMessage() );
}
$form_factory = I2CE_FormFactory::instance();

echo "Memory Limit: " . ini_get( "memory_limit" ) . "\n";
echo "Execution Time: " . ini_get( "max_execution_time" ) . "\n";

function dotrim(&$value){
  $value = trim($value);
}

$fh = fopen( $argv[0], "r" );
if ( $fh === false ) {
    die( "Couldn't update file: $argv[0].  Syntax: import_qualification_ug.php file.csv\n" );
}

function find_or_create( $value, $form, $fields=false, $do_create=false, $validate=false ) {
    global $user, $cache, $dictionary;
    if ( $value == "" ) return "";
    if ( array_key_exists( $form, $dictionary ) && array_key_exists( $value, $dictionary[$form] ) ) {
        $value = $dictionary[$form][$value];
    }
    if ( !array_key_exists( $form, $cache ) ) {
        $cache[$form] = array();
    }
    
    $is_valid = true;
    if ( !array_key_exists( $value, $cache[$form] ) ) {
        if ( $do_create ) {
            $obj = I2CE_FormFactory::instance()->createContainer( $form );
            if ( !$fields ) {
                $fields = array( 'name' => $value );
            } 
            foreach( $fields as $key => $val ) {
                $obj->getField($key)->setFromDB($val);
            }
            $obj->save( $user );
            echo "Creating new form ($form) " . $obj->getId() . " ";
            print_r( $fields );
            $cache[$form][$value] = $obj->getId();
            $obj->cleanup();
            unset( $obj );
        } else {
            if ( $validate ) {
                $is_valid = false;
            } else {
                die( "Invalid value for form: $form, value: $value.  Can't continue." );
            }
        }
    }
    if ( $validate ) {
        return $is_valid;
    } else {
        return $form . '|' . $cache[$form][$value];
    }
}

	


$cache = array();
$cache['qualification'] = array_flip( I2CE_List::listOptions( "qualification" ) );
$cache['academic_level'] = array_flip( I2CE_List::listOptions( "academic_level" ) );
//print_r ($cache['academic_level']);
/*
$row = 0;
$errors = 0;
while ( ( $data = fgetcsv( $fh ) ) !== false ) {

    array_walk( $data, "dotrim" );
    $row++;

    if ( !find_or_create( $data[iHRIS_ACADEMIC_LEVEL], "academic_level", false, false, true ) ) {
        echo "Row $row: academic_level is invalid: '" . $data[iHRIS_ACADEMIC_LEVEL] . "'\n";
        $errors++;
    }

}
fclose($fh);

if ( $errors > 0 ) {
    die( "There were errors in the import file.  Please add additional entries to the data dictionary or correct the data!" );
}*/
$fh = fopen( $argv[0], "r" );
if ( $fh === false ) {
    die( "Couldn't update file: $argv[0].  Syntax: importCSV.php [erase] file.csv\n" );
}


$Skip_no_qualification = 0;
$no_qualification = 0;
while ( ( $data = fgetcsv( $fh ) ) !== false ) {

    array_walk( $data, "dotrim" );
	    // Creating New Qualification

		if( $data[iHRIS_QUALIFICATION] != "" ) 
		{
		    if ( !array_key_exists( $data[iHRIS_QUALIFICATION] , $cache['qualification'] ) )
		     {
			    $academic_level_id = find_or_create( $data[iHRIS_ACADEMIC_LEVEL], "academic_level", false, true );
			
			    $qualification_obj = $form_factory->createContainer("qualification");
			    $qualification_obj->getField("academic_level")->setFromDB( $academic_level_id );
			    $qualification_obj->name = $data[iHRIS_QUALIFICATION];
			    
			    $qualification_obj->save( $user );
			
			    echo "Created Qualification " . $qualification_obj->getId() . "\n ";
			
			    $qualification_obj->cleanup();
			    unset( $qualification_obj );
			    $no_qualification++;
		    } else{
			     echo "\n Qualification " . $data[iHRIS_QUALIFICATION] . " is already in the system \n";
		    }
		} else 
		{
		   $Skip_no_qualification++;
		}
	}
fclose($fh);
echo "\n Created $no_qualification Qualification  \n Skipped $Skip_no_qualification because of no qualification Title.\n";

?>