_docs/_input/db/class_exportXML.inc.php

00001 <?php
00002 
00007 abstract class ExportXML
00008 {
00015     function field($name, $array) {
00016         $xml = "\t<".$name.">\n";
00017         foreach ($array as $key => $value) {
00018 
00019             // TODO: If $value is already in utf8 do not encode it
00020             $value = utf8_encode($value);
00021             $value = htmlspecialchars($value);
00022 
00023             $xml .= "\t\t<".$key.">".$value."</".$key.">\n";
00024         }
00025         $xml .= "\t</".$name.">\n";
00026         return $xml;
00027     }
00028 
00033     abstract function doExport();
00034 }
00035 
00039 class NetOfficeExport extends ExportXML
00040 {
00041     var $dbh;
00042     var $prefix;
00043     var $streber_ver = '0.048';
00044     var $person_keys;
00045     var $company_keys;
00046     var $project_keys;
00047     var $task_keys;
00048 
00049     function NetOfficeExport($dbres, $prefix) {
00050         $this->dbh = $dbres;
00051         $this->prefix = $prefix;
00052         $this->person_keys = array( 'nickname',
00053                                     'password',
00054                                     'name',
00055                                     'office_email',
00056                                     'personal_email',
00057                                     'office_phone',
00058                                     'personal_phone',
00059                                     'mobile_phone',
00060                                     'office_fax',
00061                                     'comments',
00062                                     'profile');
00063 
00064         $this->company_keys = array('name',
00065                                     'street',
00066                                     'zipcode',
00067                                     'phone',
00068                                     'fax',
00069                                     'homepage',
00070                                     'email',
00071                                     'comments');
00072 
00073         $this->project_keys = array('prio',
00074                                     'status',
00075                                     'name',
00076                                     'description');
00077 
00078         $this->task_keys = array(   'prio',
00079                                     'status',
00080                                     'name',
00081                                     'description',
00082                                     'date_start',
00083                                     'date_closed');
00084 
00085     }
00086 
00087     function doExport() {
00088         $xml = "<streber>\n";
00089         $xml .= $this->xml_version();
00090         $xml .= $this->xml_person();
00091         $xml .= $this->xml_company();
00092         $xml .= $this->xml_project();
00093         $xml .= $this->xml_projectperson();
00094         $xml .= $this->xml_task();
00095         $xml .= $this->xml_taskperson();
00096         $xml .= $this->xml_effort();
00097         $xml .= "</streber>\n";
00098         return $xml;
00099     }
00100 
00101     function xml_version() {
00102         return parent::field('database', array('version' => $this->streber_ver));
00103     }
00104 
00105     function xml_person() {
00106         $query = "SELECT * FROM {$this->prefix}members";
00107         $result = mysql_query($query, $this->dbh);
00108 
00109         $xml = '';
00110         while ($row = mysql_fetch_assoc($result)) {
00111             // Don't export admin account
00112             if (    "1" != $row['id']) {
00113                 $xml .= parent::field('person', array(
00114 //                  'id'            => $row['id'],
00115 //                  '??'            => $row['organization'],
00116                     'nickname'      => $row['login'],
00117                     'password'      => $row['password'],
00118                     'name'          => $row['name'],
00119 //                  '??'            => $row['title'],
00120                     'office_email'  => $row['email_work'],
00121                     'personal_email'=> $row['email_home'],
00122                     'office_phone'  => $row['phone_work'],
00123                     'personal_phone'=> $row['phone_home'],
00124                     'mobile_phone'  => $row['mobile'],
00125                     'office_fax'    => $row['fax'],
00126                     'comments'      => $row['comments'],
00127                     'profile'       => $row['profil'],
00128 //                  '??'            => $row['created'],
00129 //                  '??'            => $row['logout_time'],
00130 //                  '??'            => $row['last_page'],
00131 //                  '??'            => $row['timezone'],
00132                     'can_login'     => '1'));
00133             }
00134         }
00135         return $xml;
00136     }
00137 
00138     function xml_company() {
00139         $query = "SELECT * FROM {$this->prefix}organizations";
00140         $result = mysql_query($query, $this->dbh);
00141 
00142         $xml = '';
00143         while ($row = mysql_fetch_assoc($result)) {
00144             $xml .= parent::field('company', array(
00145 //              'id'            => $row['id'],
00146                 'name'          => $row['name'],
00147                 'street'        => $row['address1'],
00148 //              '??'            => $row['address2'],
00149                 'zipcode'       => $row['zip_code'],
00150 //              '??'            => $row['city'],
00151 //              '??'            => $row['country'],
00152                 'phone'         => $row['phone'],
00153                 'fax'           => $row['fax'],
00154                 'homepage'      => $row['url'],
00155                 'email'         => $row['email'],
00156                 'comments'      => $row['comments']
00157 //              '??'            => $row['created'],
00158 //              '??'            => $row['extension_logo'],
00159 //              '??'            => $row['owner'],
00160             ));
00161         }
00162         return $xml;
00163     }
00164 
00165     function xml_project() {
00166         $query = "SELECT * FROM {$this->prefix}projects";
00167         $result = mysql_query($query, $this->dbh);
00168 
00169         $xml = '';
00170         while ($row = mysql_fetch_assoc($result)) {
00171             $company_sql = $this->sql_company_query($row['organization']);
00172 
00173             $xml .= parent::field('project', array(
00174 //              'id' => $row['id'],
00175                 'company_sql' => $company_sql,
00176 //              '??' => $row['owner'],
00177                 'prio' => $row['priority'],
00178                 'status' => $row['status'],
00179                 'name' => $row['name'],
00180                 'description' => $row['description'],
00181 //              '??' => $row['url_dev'],
00182 //              '??' => $row['url_prod'],
00183 //              '??' => $row['created'],
00184 //              '??' => $row['modified'],
00185 //              '??' => $row['published'],
00186 //              '??' => $row['upload_max'],
00187 //              '??' => $row['phase_set'],
00188 //              '??' => $row['type'],
00189             ));
00190         }
00191         return $xml;
00192     }
00193 
00194     function xml_projectperson() {
00195         $query = "SELECT * FROM {$this->prefix}teams";
00196         $result = mysql_query($query, $this->dbh);
00197 
00198         $xml = '';
00199         while ($row = mysql_fetch_assoc($result)) {
00200             $person_sql = $this->sql_person_query($row['member']);
00201             $project_sql = $this->sql_project_query($row['project']);
00202 
00203             $xml .= parent::field('projectperson', array(
00204 //              'id'            => $row['id'],
00205                 'project_sql'   => $project_sql,
00206                 'person_sql'    => $person_sql
00207             ));
00208         }
00209         return $xml;
00210     }
00211 
00212     function xml_task() {
00213         $query = "SELECT * FROM {$this->prefix}tasks";
00214         $result = mysql_query($query, $this->dbh);
00215 
00216         $xml = '';
00217         while ($row = mysql_fetch_assoc($result)) {
00218             $xml .= parent::field('task', array(
00219                 'prio'          => $row['priority'],
00220                 'status'        => $row['status'],
00221                 'name'          => $row['name'],
00222 //              'description'   => $row['description'],
00223                 'description'   => $row['description'],
00224                 'date_start'    => $row['start_date'],
00225                 'date_closed'   => $row['due_date']
00226             ));
00227         }
00228         return $xml;
00229     }
00230 
00231     function xml_taskperson() {
00232         $query = "SELECT id, assigned_to, comments FROM {$this->prefix}tasks";
00233         $result = mysql_query($query, $this->dbh);
00234 
00235         $xml = '';
00236         while ($row = mysql_fetch_assoc($result)) {
00237             $person_sql = $this->sql_person_query($row['assigned_to']);
00238             $task_sql = $this->sql_task_query($row['id']);
00239 
00240             $xml .= parent::field('taskperson', array(
00241                 'person_sql'    => $person_sql,
00242                 'task_sql'      => $task_sql,
00243                 'comment'       => $row['comments']
00244             ));
00245 
00246         }
00247         return $xml;
00248     }
00249 
00250     function xml_effort() {
00251         $query = "SELECT * FROM {$this->prefix}tasks_time";
00252         $result = mysql_query($query, $this->dbh);
00253 
00254         $xml = '';
00255         while ($row = mysql_fetch_assoc($result)) {
00256             $project_sql = $this->sql_project_query($row['project']);
00257             $task_sql = $this->sql_task_query($row['task']);
00258             $person_sql = $this->sql_person_query($row['owner']);
00259 
00260             $t = strtotime($row['created'])-($row['hours']*60*60);
00261             $time_start = date("Y-m-d H:i", $t);
00262             $xml .= parent::field('effort', array(
00263                 'project_sql'   => $project_sql,
00264                 'task_sql'      => $task_sql,
00265                 'person_sql'    => $person_sql,
00266                 'time_start'    => $time_start,
00267                 'time_end'      => $row['created']
00268 //              'as_duration'   => $row['hours']
00269             ));
00270 
00271         }
00272         return $xml;
00273     }
00274 
00275     function array_combine( $keys, $vals ) {
00276         $keys = array_values( (array) $keys );
00277         $vals = array_values( (array) $vals );
00278         $n = max( count( $keys ), count( $vals ) );
00279         $r = array();
00280 
00281         for( $i=0; $i<$n; $i++ ) {
00282             $r[ $keys[$i] ] = $vals[$i];
00283         }
00284         return $r;
00285     }
00286 
00287     function sql_company_query($id) {
00288         $company = mysql_query("SELECT name, address1, zip_code, phone, fax, url, email, comments FROM {$this->prefix}organizations WHERE id = '{$id}'", $this->dbh);
00289 
00290         $company_sql = '';
00291         if ($company) {
00292             $res = mysql_fetch_assoc($company);
00293             $company_values = array(addslashes($res['name']),
00294                                     addslashes($res['address1']),
00295                                     addslashes($res['zip_code']),
00296                                     addslashes($res['phone']),
00297                                     addslashes($res['fax']),
00298                                     addslashes($res['url']),
00299                                     addslashes($res['email']),
00300                                     addslashes($res['comments']));
00301 
00302             $arr = $this->array_combine($this->company_keys, $company_values);
00303             $i = 0;
00304             foreach ($arr as $key => $val) {
00305                 $company_sql .= $key." = '".$val."'";
00306                 if ($i++ < count($arr) - 1) $company_sql .= " AND ";
00307             }
00308         }
00309         return $company_sql;
00310     }
00311 
00312     function sql_person_query($id) {
00313         $person = mysql_query("SELECT login, password, name, email_work, email_home, phone_work, phone_home, mobile, fax, comments, profil FROM {$this->prefix}members WHERE id = '{$id}'", $this->dbh);
00314 
00315         $person_sql = '';
00316         if ($person) {
00317             $res = mysql_fetch_assoc($person);
00318             $person_values = array( addslashes($res['login']),
00319                                     addslashes($res['password']),
00320                                     addslashes($res['name']),
00321                                     addslashes($res['email_work']),
00322                                     addslashes($res['email_home']),
00323                                     addslashes($res['phone_work']),
00324                                     addslashes($res['phone_home']),
00325                                     addslashes($res['mobile']),
00326                                     addslashes($res['fax']),
00327                                     addslashes($res['comments']),
00328                                     addslashes($res['profil']));
00329 
00330             if ($res['login'] == "admin") {
00331                 $person_sql = "nickname = 'admin'";
00332             } else {
00333                 $arr = $this->array_combine($this->person_keys, $person_values);
00334                 $i = 0;
00335                 foreach ($arr as $key => $val) {
00336                     $person_sql .= $key." = '".$val."'";
00337                     if ($i++ < count($arr) - 1) $person_sql .= " AND ";
00338                 }
00339             }
00340         }
00341         return $person_sql;
00342     }
00343 
00344     function sql_project_query($id) {
00345         $project = mysql_query("SELECT priority, status, name, description FROM {$this->prefix}projects WHERE id = '{$id}'", $this->dbh);
00346 
00347         $project_sql = '';
00348         if ($project) {
00349             $res = mysql_fetch_assoc($project);
00350             $project_values = array(addslashes($res['priority']),
00351                                     addslashes($res['status']),
00352                                     addslashes($res['name']),
00353                                     addslashes($res['description']));
00354 
00355             $arr = $this->array_combine($this->project_keys, $project_values);
00356             $i = 0;
00357             foreach ($arr as $key => $val) {
00358                 $project_sql .= $key." = '".$val."'";
00359                 if ($i++ < count($arr) - 1) $project_sql .= " AND ";
00360             }
00361         }
00362         return $project_sql;
00363     }
00364 
00365     function sql_task_query($id) {
00366         $task = mysql_query("SELECT priority, status, name, description, start_date, due_date FROM {$this->prefix}tasks WHERE id = '{$id}'", $this->dbh);
00367 
00368         $task_sql = '';
00369         if ($task) {
00370             $res = mysql_fetch_assoc($task);
00371 
00372             if ($res['start_date'] == "--") $res['start_date'] = "0000-00-00";
00373             if ($res['due_date'] == "--") $res['due_date'] = "0000-00-00";
00374 
00375             $task_values = array(   addslashes($res['priority']),
00376                                     addslashes($res['status']),
00377                                     addslashes($res['name']),
00378                                     addslashes($res['description']),
00379                                     addslashes($res['start_date']),
00380                                     addslashes($res['due_date']));
00381 
00382             $arr = $this->array_combine($this->task_keys, $task_values);
00383             $i = 0;
00384             foreach ($arr as $key => $val) {
00385                 $task_sql .= $key." = '".$val."'";
00386                 if ($i++ < count($arr) - 1) $task_sql .= " AND ";
00387             }
00388         }
00389         return $task_sql;
00390     }
00391 }
00392 ?>

Generated on Sun Mar 4 17:19:27 2007 for streber by  doxygen 1.5.1-p1