phpgroupware-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Phpgroupware-cvs] hrm/inc class.sojob.inc.php,1.4


From: sigurdne
Subject: [Phpgroupware-cvs] hrm/inc class.sojob.inc.php,1.4
Date: Mon, 21 Nov 2005 22:35:00 +0100

Update of hrm/inc

Modified Files:
     Branch: MAIN
            class.sojob.inc.php lines: +92 -17

Log Message:
no message

====================================================
Index: hrm/inc/class.sojob.inc.php
diff -u hrm/inc/class.sojob.inc.php:1.3 hrm/inc/class.sojob.inc.php:1.4
--- hrm/inc/class.sojob.inc.php:1.3     Mon Nov 21 20:25:33 2005
+++ hrm/inc/class.sojob.inc.php Mon Nov 21 21:35:50 2005
@@ -60,40 +60,110 @@

                        $table = 'hrm_job';

+                       $parent_select = ' WHERE job_level =0';
+
                        if($query)
                        {
                                $query = ereg_replace("'",'',$query);
                                $query = ereg_replace('"','',$query);

-                               $querymethod = " WHERE name $this->like 
'%$query%'";
+                               $where = ' AND';
+                               $querymethod = " name $this->like '%$query%'";
                        }

-                       $sql = "SELECT * FROM $table $querymethod";
-
-                       $this->db2->query($sql,__LINE__,__FILE__);
-                       $this->total_records = $this->db2->num_rows();
+                       $sql = "SELECT * FROM $table ";

-                       if(!$allrows)
-                       {
-                               $this->db->limit_query($sql . 
$ordermethod,$start,__LINE__,__FILE__);
-                       }
-                       else
-                       {
-                               $this->db->query($sql . 
$ordermethod,__LINE__,__FILE__);
-                       }
+                       $this->db->query($sql . $parent_select . $where . 
$querymethod . $ordermethod,__LINE__,__FILE__);
+                       $this->total_records = $this->db->num_rows();

                        while ($this->db->next_record())
                        {
-                               $job_info[] = array
+                               $jobs[] = array
                                (
                                        'id'    => $this->db->f('id'),
                                        'level' => 
(int)$this->db->f('job_level'),
+                                       'owner' => (int)$this->db->f('owner'),
                                        'name'  => 
stripslashes($this->db->f('name')),
-                                       'descr' => 
stripslashes($this->db->f('descr'))
+                                       'descr' => 
stripslashes($this->db->f('descr')),
+                                       'parent'=> 0
                                );
                        }

-                       return $job_info;
+                       if ($querymethod)
+                       {
+                               $where = ' WHERE';
+                               $and = ' AND';
+                       }
+                       else
+                       {
+                               unset($where);
+                               $and = ' WHERE';
+                       }
+                       $num_jobs = count($jobs);
+                       for ($i=0;$i < $num_jobs;$i++)
+                       {
+                               $sub_select = $and . ' job_parent=' . 
$jobs[$i]['id'] . " AND job_level=" . ($jobs[$i]['level']+1);
+
+                               $this->db->query($sql . $where . $querymethod . 
$sub_select . $ordermethod,__LINE__,__FILE__);
+
+                               $this->total_records += $this->db->num_rows();
+
+                               $subjobs = array();
+                               $j = 0;
+                               while ($this->db->next_record())
+                               {
+                                       $subjobs[$j]['id']          = 
(int)$this->db->f('id');
+                                       $subjobs[$j]['owner']       = 
(int)$this->db->f('owner');
+                                       $subjobs[$j]['level']       = 
(int)$this->db->f('job_level');
+                                       $subjobs[$j]['parent']      = 
(int)$this->db->f('job_parent');
+                                       $subjobs[$j]['name']        = 
$this->db->f('name');
+                                       $subjobs[$j]['descr'] = 
$this->db->f('descr');
+                                       $j++;
+                               }
+
+                               $num_subjobs = count($subjobs);
+                               if ($num_subjobs != 0)
+                               {
+                                       $newjobs = array();
+                                       for ($k = 0; $k <= $i; $k++)
+                                       {
+                                               $newjobs[$k] = $jobs[$k];
+                                       }
+                                       for ($k = 0; $k < $num_subjobs; $k++)
+                                       {
+                                               $newjobs[$k+$i+1] = 
$subjobs[$k];
+                                       }
+                                       for ($k = $i+1; $k < $num_jobs; $k++)
+                                       {
+                                               $newjobs[$k+$num_subjobs] = 
$jobs[$k];
+                                       }
+                                       $jobs = $newjobs;
+                                       $num_jobs = count($jobs);
+                               }
+
+                       }
+
+                       if (!$allrows)
+                       {
+                               $max = 
$GLOBALS['phpgw_info']['user']['preferences']['common']['maxmatchs'];
+                               $max = $max + $start;
+
+                               $k=0;
+                               for($i=$start;$i<$max;++$i)
+                               {
+                                       if(is_array($jobs[$i]))
+                                       {
+                                               $sjobs[$k] = $jobs[$i];
+                                               ++$k;
+                                       }
+                               }
+                               if(is_array($sjobs))
+                               {
+                                       $jobs = $sjobs;
+                               }
+                       }
+
+                       return $jobs;
                }


@@ -128,6 +198,11 @@
                                $this->db->next_record();
                                $level  = (int)$this->db->f('job_level') +1;
                        }
+                       else
+                       {
+                               $level  = 0;
+                       }
+
                        $values['name'] = 
$this->db->db_addslashes($values['name']);
                        $values['descr'] = 
$this->db->db_addslashes($values['descr']);







reply via email to

[Prev in Thread] Current Thread [Next in Thread]