Changeset 4ade32


Ignore:
Timestamp:
03/17/13 13:31:35 (5 years ago)
Author:
pierre-alain <pierre-alain@…>
Branches:
master
Children:
969dbc
Parents:
91feee
git-author:
pierre-alain <pierre-alain@…> (03/17/13 13:31:35)
git-committer:
pierre-alain <pierre-alain@…> (03/17/13 13:31:35)
Message:

Optimize joins in sql queries

Location:
OWR
Files:
1 added
13 edited

Legend:

Unmodified
Added
Removed
  • OWR/DAO.php

    rb65617 r4ade32  
    9595 
    9696    /** 
     97     * @var int weight of the table in the query, used to optimize joins 
     98     * @access protected 
     99     */ 
     100    protected $_weight = 1; 
     101 
     102    /** 
    97103     * @var array associative array representing the SQL schema 
    98104     * @access protected 
     
    649655 
    650656    /** 
     657     * Returns the weight 
     658     * 
     659     * @access public 
     660     * @author Pierre-Alain Mignot <contact@openwebreader.org> 
     661     * @return int the weight for this table 
     662     */ 
     663    public function getWeight() 
     664    { 
     665        return (int) $this->_weight; 
     666    } 
     667 
     668    /** 
     669     * Returns the relations 
     670     * 
     671     * @access public 
     672     * @author Pierre-Alain Mignot <contact@openwebreader.org> 
     673     * @return array the relations for this table 
     674     */ 
     675    public function getRelations() 
     676    { 
     677        return (array) $this->_relations; 
     678    } 
     679 
     680    /** 
     681     * Returns the relations related to the current user 
     682     * 
     683     * @access public 
     684     * @author Pierre-Alain Mignot <contact@openwebreader.org> 
     685     * @return array the relations for the current user for this table 
     686     */ 
     687    public function getUserRelations() 
     688    { 
     689        return (array) $this->_userRelations; 
     690    } 
     691 
     692    /** 
     693     * Returns all the relations 
     694     * 
     695     * @access public 
     696     * @author Pierre-Alain Mignot <contact@openwebreader.org> 
     697     * @return array all the relations for this table 
     698     */ 
     699    public function getAllRelations() 
     700    { 
     701        return (array) array_merge($this->getRelations(), $this->getUserRelations()); 
     702    } 
     703 
     704    /** 
    651705     * Returns the specified DAO object 
    652706     * 
     
    773827 
    774828    /** 
     829     * Returns the JOIN conditions 
     830     * This method tries to order the JOIN conditions to get better performance results 
     831     * 
     832     * @author Pierre-Alain Mignot <contact@openwebreader.org> 
     833     * @param array $joins the tables to join 
     834     * @return array the JOIN conditions 
     835     * @access protected 
     836     */ 
     837    protected function _optimizeJoins(array $joins) 
     838    { 
     839        $tables = array(); 
     840        foreach(array_keys($joins) as $table) 
     841        { 
     842            $tables[self::getCachedDAO($table)->getWeight()][] = $table; 
     843        } 
     844        krsort($tables); 
     845 
     846        $joins = array(); 
     847        $tables = Arrays::multiDimtoNumericalArray($tables); 
     848 
     849        $tableName = static::getTableName(); 
     850 
     851        foreach($tables as $k => $table) 
     852        { 
     853            $tableRel = $k === 0 ? $tableName : $tables[$k - 1]; // the table we need to LEFT JOIN 
     854            $relations = self::getCachedDAO($table)->getAllRelations(); 
     855            foreach($relations as $t => $relation) 
     856            { 
     857                if($t !== $tableRel) continue; 
     858 
     859                $join = array(); 
     860                foreach($relation as $myfield => $itsfield) 
     861                { 
     862                    $join[] = $t.'.'.$itsfield.'='.$table.'.'.$myfield; 
     863                } 
     864                $joins[] = ' LEFT JOIN '.$table.' ON ('.join(' AND ', $join).')'; 
     865                continue 2; 
     866            } 
     867 
     868            // can't find relations with previous table, defaulting to INNER JOIN 
     869            foreach($relations as $t => $relation) 
     870            { 
     871                $join = array(); 
     872                foreach($relation as $myfield => $itsfield) 
     873                { 
     874                    $join[] = $t.'.'.$itsfield.'='.$table.'.'.$myfield; 
     875                } 
     876                $joins[] = ' JOIN '.$table.' ON ('.join(' AND ', $join).')'; 
     877                continue 2; 
     878            } 
     879 
     880            throw new Exception("Can't find a relation table for table ".$table, Exception::E_OWR_DIE); 
     881        } 
     882 
     883        return (array) $joins; 
     884    } 
     885 
     886    /** 
    775887     * Prepares the WHERE clauses for a query 
    776888     * 
    777889     * @author Pierre-Alain Mignot <contact@openwebreader.org> 
    778890     * @param mixed $args parameters, can be null, a string (if an $_idField has been declared), or an array 
    779      * @param string $select select fields, by default all 
    780      * @param string $groupby the groupby clause 
    781      * @param string $selectAdd additional fields to fetch, optionnal 
     891     * @param array &$request the fields to SELECT 
     892     * @param array &$fields the fields definition 
     893     * @param array &$wheres the WHERE fields 
     894     * @param array &$joins the JOIN conditions 
    782895     * @access protected 
    783896     * @todo clean up the code 
    784897     */ 
    785     protected function _prepareWhere(array $args, &$request, &$fields, &$wheres, &$joins) 
     898    protected function _prepareWhere(array $args, array &$request, array &$fields, array &$wheres, array &$joins) 
    786899    { 
    787900        foreach($args as $key=>$values) 
     
    863976                        if(!isset($joins[$table])) 
    864977                        { 
    865                             $joins[$table] = 'JOIN '.$table.' ON ('; 
    866                             $join = array(); 
    867                             foreach($this->_userRelations[$table] as $mine => $its) 
    868                             { 
    869                                 $join[] = $this->_name.'.'.$mine.'='.$table.'.'.$its; 
    870                             } 
    871                             $joins[$table] .= join(' AND ', $join).')'; 
     978                            $joins[$table] = true; 
    872979                            $wheres[] = $table.'.uid='.User::iGet()->getUid(); 
    873980                        } 
     
    9001007 
    9011008                        if(!isset($joins[$table])) 
    902                         { 
    903                             $joins[$table] = 'JOIN '.$table.' ON ('; 
    904                             $join = array(); 
    905                             foreach($this->_relations[$table] as $mine => $its) 
    906                             { 
    907                                 $join[] = $this->_name.'.'.$mine.'='.$table.'.'.$its; 
    908                             } 
    909                             $joins[$table] .= join(' AND ', $join).')'; 
    910                         } 
     1009                            $joins[$table] = true; 
     1010 
    9111011                        continue; 
    9121012                    } 
     
    9241024                                if(!isset($joins[$relTable])) 
    9251025                                { 
    926                                     $joins[$relTable] = 'JOIN '.$relTable.' ON ('; 
    927                                     $join = array(); 
    928                                     foreach($this->_userRelations[$relTable] as $mine => $its) 
    929                                     { 
    930                                         $join[] = $relTable.'.'.$mine.'='.$relTable.'.'.$its; 
    931                                     } 
    932                                     $joins[$relTable] .= join(' AND ', $join).')'; 
     1026                                    $joins[$relTable] = true; 
    9331027                                    $wheres[] = $relTable.'.uid='.User::iGet()->getUid(); 
    9341028                                } 
     
    9361030                                if(!isset($joins[$table])) 
    9371031                                { 
    938                                     $joins[$table] = 'JOIN '.$table.' ON ('; 
    939                                     $join = array(); 
    940                                     foreach($rel as $its => $mine) 
    941                                     { 
    942                                         $join[] = $relTable.'.'.$mine.'='.$table.'.'.$its; 
    943                                     } 
    944                                     $joins[$table] .= join(' AND ', $join).')'; 
     1032                                    $joins[$table] = true; 
    9451033                                    $wheres[] = $table.'.uid='.User::iGet()->getUid(); 
    9461034                                } 
     
    9891077 
    9901078                                if(!isset($joins[$relTable])) 
    991                                 { 
    992                                     $joins[$relTable] = 'JOIN '.$relTable.' ON ('; 
    993                                     $join = array(); 
    994                                     foreach($this->_relations[$relTable] as $mine => $its) 
    995                                     { 
    996                                         $join[] = $relTable.'.'.$its.'='.$this->_name.'.'.$mine; 
    997                                     } 
    998                                     $joins[$relTable] .= join(' AND ', $join).')'; 
    999                                 } 
     1079                                    $joins[$relTable] = true; 
    10001080 
    10011081                                if(!isset($joins[$table])) 
    10021082                                { 
    1003                                     $joins[$table] = 'JOIN '.$table.' ON ('; 
    1004                                     $join = array(); 
    1005                                     $relations = self::$_tableFields[$relTable]; 
    1006                                     if(!empty($relations['userRelations']) && !empty($relations['userRelations'][$table])) 
    1007                                     { 
    1008                                         $relationTable = $relations['userRelations'][$table]; 
    1009                                         foreach($relationTable as $its => $mine) 
    1010                                         { 
    1011                                             $join[] = $table.'.'.$mine.'='.$relTable.'.'.$its; 
    1012                                         } 
    1013                                         $joins[$table] .= join(' AND ', $join).')'; 
     1083                                    $joins[$table] = true; 
     1084                                    if(!empty(self::$_tableFields[$relTable]['userRelations']) && !empty(self::$_tableFields[$relTable]['userRelations'][$table])) 
    10141085                                        continue 2; 
    1015                                     } 
    10161086 
    10171087                                    if(!empty($relations['relations']) && !empty($relations['relations'][$table])) 
    1018                                     { 
    1019                                         $relationTable = $relations['userRelations'][$table]; 
    1020                                         foreach($relationTable as $its => $mine) 
    1021                                         { 
    1022                                             $join[] = $table.'.'.$mine.'='.$relTable.'.'.$its; 
    1023                                         } 
    1024                                         $joins[$table] .= join(' AND ', $join).')'; 
    10251088                                        continue 2; 
    1026                                     } 
    10271089                                } 
    10281090                            } 
     
    10381100                                if(!isset($joins[$relTable])) 
    10391101                                { 
    1040                                     $joins[$relTable] = 'JOIN '.$relTable.' ON ('; 
    1041                                     $join = array(); 
    1042                                     foreach($this->_userRelations[$relTable] as $mine => $its) 
    1043                                     { 
    1044                                         $join[] = $relTable.'.'.$mine.'='.$relTable.'.'.$its; 
    1045                                     } 
    1046                                     $joins[$relTable] .= join(' AND ', $join).')'; 
     1102                                    $joins[$relTable] = true; 
    10471103                                    $wheres[] = $relTable.'.uid='.User::iGet()->getUid(); 
    10481104                                } 
     
    10501106                                if(!isset($joins[$table])) 
    10511107                                { 
    1052                                     $joins[$table] = 'JOIN '.$table.' ON ('; 
    1053                                     $join = array(); 
    1054                                     foreach($rel as $its => $mine) 
    1055                                     { 
    1056                                         $join[] = $relTable.'.'.$mine.'='.$table.'.'.$its; 
    1057                                     } 
    1058                                     $joins[$table] .= join(' AND ', $join).')'; 
     1108                                    $joins[$table] = true; 
    10591109                                    $wheres[] = $table.'.uid='.User::iGet()->getUid(); 
    10601110                                } 
     
    11031153 
    11041154                                if(!isset($joins[$relTable])) 
    1105                                 { 
    1106                                     $joins[$relTable] = 'JOIN '.$relTable.' ON ('; 
    1107                                     $join = array(); 
    1108                                     foreach($this->_relations[$relTable] as $mine => $its) 
    1109                                     { 
    1110                                         $join[] = $relTable.'.'.$its.'='.$this->_name.'.'.$mine; 
    1111                                     } 
    1112                                     $joins[$relTable] .= join(' AND ', $join).')'; 
    1113                                 } 
     1155                                    $joins[$relTable] = true; 
    11141156 
    11151157                                if(!isset($joins[$table])) 
    11161158                                { 
    1117                                     $joins[$table] = 'JOIN '.$table.' ON ('; 
    1118                                     $join = array(); 
    1119                                     $relations = self::$_tableFields[$relTable]; 
    1120                                     if(!empty($relations['userRelations']) && !empty($relations['userRelations'][$table])) 
    1121                                     { 
    1122                                         $relationTable = $relations['userRelations'][$table]; 
    1123                                         foreach($relationTable as $its => $mine) 
    1124                                         { 
    1125                                             $join[] = $table.'.'.$mine.'='.$relTable.'.'.$its; 
    1126                                         } 
    1127                                         $joins[$table] .= join(' AND ', $join).')'; 
     1159                                    $joins[$table] = true; 
     1160                                    if(!empty(self::$_tableFields[$relTable]['userRelations']) && !empty(self::$_tableFields[$relTable]['userRelations'][$table])) 
    11281161                                        continue 2; 
    1129                                     } 
    1130  
    1131                                     if(!empty($relations['relations']) && !empty($relations['relations'][$table])) 
    1132                                     { 
    1133                                         $relationTable = $relations['userRelations'][$table]; 
    1134                                         foreach($relationTable as $its => $mine) 
    1135                                         { 
    1136                                             $join[] = $table.'.'.$mine.'='.$relTable.'.'.$its; 
    1137                                         } 
    1138                                         $joins[$table] .= join(' AND ', $join).')'; 
     1162 
     1163                                    if(!empty(self::$_tableFields[$relTable]['relations']) && !empty(self::$_tableFields[$relTable]['relations'][$table])) 
    11391164                                        continue 2; 
    1140                                     } 
    11411165                                } 
    11421166                            } 
     
    11751199                            if(!isset($joins[$table])) 
    11761200                            { 
    1177                                 $joins[$table] = 'JOIN '.$table.' ON ('; 
    1178                                 $join = array(); 
    1179                                 foreach($relFields as $mine => $its) 
    1180                                 { 
    1181                                     $join[] = $this->_name.'.'.$mine.'='.$table.'.'.$its; 
    1182                                 } 
    1183                                 $joins[$table] .= join(' AND ', $join).')'; 
     1201                                $joins[$table] = true; 
    11841202                                $wheres[] = $table.'.uid='.User::iGet()->getUid(); 
    11851203                            } 
     
    12161234 
    12171235                            if(!isset($joins[$table])) 
    1218                             { 
    1219                                 $joins[$table] = 'JOIN '.$table.' ON ('; 
    1220                                 $join = array(); 
    1221                                 foreach($relFields as $mine => $its) 
    1222                                 { 
    1223                                     $join[] = $this->_name.'.'.$mine.'='.$table.'.'.$its; 
    1224                                 } 
    1225                                 $joins[$table] .= join(' AND ', $join).')'; 
    1226                             } 
     1236                                $joins[$table] = true; 
     1237 
    12271238                            continue 2; // OK found the field, continue to wheres iteration 
    12281239                        } 
     
    12871298        if(!empty($joins)) 
    12881299        { 
    1289             $query .=' 
    1290         '.join("\n        ", array_unique($joins)); 
     1300            $query .= ' 
     1301        '.join("\n        ", $this->_optimizeJoins($joins)); 
    12911302        } 
    12921303 
     
    13681379                        if(!isset($joins[$table])) 
    13691380                        { 
    1370                             $joins[$table] = 'JOIN '.$table.' ON ('; 
    1371                             $join = array(); 
    1372                             foreach($this->_userRelations[$table] as $mine => $its) 
    1373                             { 
    1374                                 $join[] = $this->_name.'.'.$mine.'='.$table.'.'.$its; 
    1375                             } 
    1376                             $joins[$table] .= join(' AND ', $join).')'; 
     1381                            $joins[$table] = true; 
    13771382                            $wheres[] = $table.'.uid='.User::iGet()->getUid(); 
    13781383                        } 
     
    13871392                        $selects[] = $table.'.'.$field.$alias; 
    13881393                        if(!isset($joins[$table])) 
    1389                         { 
    1390                             $joins[$table] = 'JOIN '.$table.' ON ('; 
    1391                             $join = array(); 
    1392                             foreach($this->_relations[$table] as $mine => $its) 
    1393                             { 
    1394                                 $join[] = $this->_name.'.'.$mine.'='.$table.'.'.$its; 
    1395                             } 
    1396                             $joins[$table] .= join(' AND ', $join).')'; 
    1397                         } 
     1394                            $joins[$table] = true; 
     1395 
    13981396                        continue; 
    13991397                    } 
     
    14121410                                if(!isset($joins[$relTable])) 
    14131411                                { 
    1414                                     $joins[$relTable] = 'JOIN '.$relTable.' ON ('; 
    1415                                     $join = array(); 
    1416                                     foreach($this->_userRelations[$relTable] as $mine => $its) 
    1417                                     { 
    1418                                         $join[] = $relTable.'.'.$mine.'='.$relTable.'.'.$its; 
    1419                                     } 
    1420                                     $joins[$relTable] .= join(' AND ', $join).')'; 
     1412                                    $joins[$relTable] = true; 
    14211413                                    $wheres[] = $relTable.'.uid='.User::iGet()->getUid(); 
    14221414                                } 
     
    14241416                                if(!isset($joins[$table])) 
    14251417                                { 
    1426                                     $joins[$table] = 'JOIN '.$table.' ON ('; 
    1427                                     $join = array(); 
    1428                                     foreach($rel as $its => $mine) 
    1429                                     { 
    1430                                         $join[] = $relTable.'.'.$mine.'='.$table.'.'.$its; 
    1431                                     } 
    1432                                     $joins[$table] .= join(' AND ', $join).')'; 
     1418                                    $joins[$table] = true; 
    14331419                                    $wheres[] = $table.'.uid='.User::iGet()->getUid(); 
    14341420                                } 
     
    14401426                                $selects[] = $table.'.'.$field.$alias; 
    14411427                                if(!isset($joins[$relTable])) 
    1442                                 { 
    1443                                     $joins[$relTable] = 'JOIN '.$relTable.' ON ('; 
    1444                                     $join = array(); 
    1445                                     foreach($this->_relations[$relTable] as $mine => $its) 
    1446                                     { 
    1447                                         $join[] = $relTable.'.'.$its.'='.$this->_name.'.'.$mine; 
    1448                                     } 
    1449                                     $joins[$relTable] .= join(' AND ', $join).')'; 
    1450                                 } 
     1428                                    $joins[$relTable] = true; 
    14511429 
    14521430                                if(!isset($joins[$table])) 
    14531431                                { 
    1454                                     $joins[$table] = 'JOIN '.$table.' ON ('; 
    1455                                     $join = array(); 
     1432                                    $joins[$table] = true; 
    14561433                                    $relations = self::$_tableFields[$relTable]; 
    14571434                                    if(!empty($relations['userRelations']) && !empty($relations['userRelations'][$table])) 
    1458                                     { 
    1459                                         $relationTable = $relations['userRelations'][$table]; 
    1460                                         foreach($relationTable as $its => $mine) 
    1461                                         { 
    1462                                             $join[] = $table.'.'.$mine.'='.$relTable.'.'.$its; 
    1463                                         } 
    1464                                         $joins[$table] .= join(' AND ', $join).')'; 
    14651435                                        continue 2; 
    1466                                     } 
    14671436 
    14681437                                    if(!empty($relations['relations']) && !empty($relations['relations'][$table])) 
    1469                                     { 
    1470                                         $relationTable = $relations['userRelations'][$table]; 
    1471                                         foreach($relationTable as $its => $mine) 
    1472                                         { 
    1473                                             $join[] = $table.'.'.$mine.'='.$relTable.'.'.$its; 
    1474                                         } 
    1475                                         $joins[$table] .= join(' AND ', $join).')'; 
    14761438                                        continue 2; 
    1477                                     } 
    14781439                                } 
    14791440                            } 
     
    14901451                                if(!isset($joins[$relTable])) 
    14911452                                { 
    1492                                     $joins[$relTable] = 'JOIN '.$relTable.' ON ('; 
    1493                                     $join = array(); 
    1494                                     foreach($this->_userRelations[$relTable] as $mine => $its) 
    1495                                     { 
    1496                                         $join[] = $relTable.'.'.$mine.'='.$relTable.'.'.$its; 
    1497                                     } 
    1498                                     $joins[$relTable] .= join(' AND ', $join).')'; 
     1453                                    $joins[$relTable] = true; 
    14991454                                    $wheres[] = $relTable.'.uid='.User::iGet()->getUid(); 
    15001455                                } 
     
    15021457                                if(!isset($joins[$table])) 
    15031458                                { 
    1504                                     $joins[$table] = 'JOIN '.$table.' ON ('; 
    1505                                     $join = array(); 
    1506                                     foreach($rel as $its => $mine) 
    1507                                     { 
    1508                                         $join[] = $relTable.'.'.$mine.'='.$table.'.'.$its; 
    1509                                     } 
    1510                                     $joins[$table] .= join(' AND ', $join).')'; 
     1459                                    $joins[$table] = true; 
    15111460                                    $wheres[] = $table.'.uid='.User::iGet()->getUid(); 
    15121461                                } 
     
    15181467                                $selects[] = $table.'.'.$field.$alias; 
    15191468                                if(!isset($joins[$relTable])) 
    1520                                 { 
    1521                                     $joins[$relTable] = 'JOIN '.$relTable.' ON ('; 
    1522                                     $join = array(); 
    1523                                     foreach($this->_relations[$relTable] as $mine => $its) 
    1524                                     { 
    1525                                         $join[] = $relTable.'.'.$its.'='.$this->_name.'.'.$mine; 
    1526                                     } 
    1527                                     $joins[$relTable] .= join(' AND ', $join).')'; 
    1528                                 } 
     1469                                    $joins[$relTable] = true; 
    15291470 
    15301471                                if(!isset($joins[$table])) 
    15311472                                { 
    1532                                     $joins[$table] = 'JOIN '.$table.' ON ('; 
    1533                                     $join = array(); 
     1473                                    $joins[$table] = true; 
    15341474                                    $relations = self::$_tableFields[$relTable]; 
    15351475                                    if(!empty($relations['userRelations']) && !empty($relations['userRelations'][$table])) 
    1536                                     { 
    1537                                         $relationTable = $relations['userRelations'][$table]; 
    1538                                         foreach($relationTable as $its => $mine) 
    1539                                         { 
    1540                                             $join[] = $table.'.'.$mine.'='.$relTable.'.'.$its; 
    1541                                         } 
    1542                                         $joins[$table] .= join(' AND ', $join).')'; 
    15431476                                        continue 2; 
    1544                                     } 
    15451477 
    15461478                                    if(!empty($relations['relations']) && !empty($relations['relations'][$table])) 
    1547                                     { 
    1548                                         $relationTable = $relations['userRelations'][$table]; 
    1549                                         foreach($relationTable as $its => $mine) 
    1550                                         { 
    1551                                             $join[] = $table.'.'.$mine.'='.$relTable.'.'.$its; 
    1552                                         } 
    1553                                         $joins[$table] .= join(' AND ', $join).')'; 
    15541479                                        continue 2; 
    1555                                     } 
    15561480                                } 
    15571481                            } 
     
    15711495                            if(!isset($joins[$table])) 
    15721496                            { 
    1573                                 $joins[$table] = 'JOIN '.$table.' ON ('; 
    1574                                 $join = array(); 
    1575                                 foreach($relFields as $mine => $its) 
    1576                                 { 
    1577                                     $join[] = $this->_name.'.'.$mine.'='.$table.'.'.$its; 
    1578                                 } 
    1579                                 $joins[$table] .= join(' AND ', $join).')'; 
     1497                                $joins[$table] = true; 
    15801498                                $wheres[] = $table.'.uid='.User::iGet()->getUid(); 
    15811499                            } 
     
    15931511                            $selects[] = $table.'.'.$field.$alias; 
    15941512                            if(!isset($joins[$table])) 
    1595                             { 
    1596                                 $joins[$table] = 'JOIN '.$table.' ON ('; 
    1597                                 $join = array(); 
    1598                                 foreach($relFields as $mine => $its) 
    1599                                 { 
    1600                                     $join[] = $this->_name.'.'.$mine.'='.$table.'.'.$its; 
    1601                                 } 
    1602                                 $joins[$table] .= join(' AND ', $join).')'; 
    1603                             } 
     1513                                $joins[$table] = true; 
     1514 
    16041515                            continue 2; // OK found the field, continue to select iteration 
    16051516                        } 
    16061517                    } 
    16071518                } 
     1519 
     1520 
    16081521            } 
    16091522        } 
  • OWR/DAO/News.php

    rb65617 r4ade32  
    116116        ); 
    117117        $this->_userRelations = array( 
    118             'news_relations'        => array('id'       => 'newsid'), 
    119             'streams_relations'     => array('rssid'    => 'rssid') 
     118            'news_relations'            => array('id'       => 'newsid'), 
     119            'streams_relations'         => array('rssid'    => 'rssid'), 
     120            'streams_relations_name'    => array('rssid'    => 'rssid'), 
    120121        ); 
    121122        $this->_relations = array( 
    122123            'news_contents'         => array('id'       => 'id'), 
    123124            'news_relations_tags'   => array('id'       => 'newsid'), 
    124             'streams'               => array('rssid'    => 'id') 
     125            'streams'               => array('rssid'    => 'id'), 
     126            'streams_contents'      => array('rssid'    => 'rssid') 
    125127        ); 
     128        $this->_weight = 13; 
    126129        parent::__construct(); 
    127130    } 
  • OWR/DAO/News/Contents.php

    rb65617 r4ade32  
    7373        ); 
    7474        $this->_userRelations = array( 
    75             'news_relations'    => array('id'   => 'newsid') 
     75            'news_relations'    => array('id'        => 'newsid') 
    7676        ); 
    7777        $this->_relations = array( 
    78             'news'              => array('id'   => 'id') 
     78            'news'              => array('id'        => 'id') 
    7979        ); 
     80        $this->_weight = 12; 
    8081        parent::__construct(); 
    8182    } 
  • OWR/DAO/News/Relations.php

    rb65617 r4ade32  
    8080    { 
    8181        $this->_fields = array( 
    82             'newsid'    => array('required' => true, 'type' => \PDO::PARAM_INT), 
    83             'rssid'     => array('required' => true, 'type' => \PDO::PARAM_INT), 
    84             'status'    => array('required' => false, 'type' => \PDO::PARAM_INT, 'default' => 1), 
    85             'uid'       => array('required' => true, 'type' => \PDO::PARAM_INT) 
     82            'newsid'                    => array('required' => true, 'type' => \PDO::PARAM_INT), 
     83            'rssid'                     => array('required' => true, 'type' => \PDO::PARAM_INT), 
     84            'status'                    => array('required' => false, 'type' => \PDO::PARAM_INT, 'default' => 1), 
     85            'uid'                       => array('required' => true, 'type' => \PDO::PARAM_INT) 
    8686        ); 
    8787        $this->_userRelations = array( 
    88             'streams_relations'     => array('rssid'    => 'rssid'), 
    89             'news_relations_tags'   => array('newsid'   => 'newsid') 
     88            'streams_relations'         => array('rssid'    => 'rssid'), 
     89            'news_relations_tags'       => array('newsid'   => 'newsid'), 
     90            'streams_relations_name'    => array('rssid'    => 'rssid') 
    9091        ); 
    9192        $this->_relations = array( 
    92             'streams'           => array('rssid'    => 'id'), 
    93             'news'              => array('newsid'   => 'id') 
     93            'news'                      => array('newsid'   => 'id'), 
     94            'news_contents'             => array('newsid'   => 'id'), 
     95            'streams'                   => array('rssid'    => 'id'), 
     96            'streams_contents'          => array('rssid'    => 'rssid') 
    9497        ); 
     98        $this->_weight = 11; 
    9599        parent::__construct(); 
    96100    } 
  • OWR/DAO/News/Relations/Tags.php

    rb65617 r4ade32  
    7474    { 
    7575        $this->_fields = array( 
    76             'newsid' => array('required' => true, 'type' => \PDO::PARAM_INT), 
    77             'tid'    => array('required' => true, 'type' => \PDO::PARAM_INT), 
    78             'uid'    => array('required' => true, 'type' => \PDO::PARAM_INT) 
     76            'newsid'                    => array('required' => true, 'type' => \PDO::PARAM_INT), 
     77            'tid'                       => array('required' => true, 'type' => \PDO::PARAM_INT), 
     78            'uid'                       => array('required' => true, 'type' => \PDO::PARAM_INT) 
    7979        ); 
    8080        $this->_userRelations = array( 
    81             'news_relations'    => array('newsid'   => 'newsid'), 
    82             'news_tags'         => array('tid'      => 'id') 
     81            'news_relations'            => array('newsid'   => 'newsid'), 
     82            'news_tags'                 => array('tid'      => 'id') 
    8383        ); 
    8484        $this->_relations = array( 
    85             'news'              => array('newsid'   => 'id'), 
     85            'news'                      => array('newsid'   => 'id'), 
     86            'news_contents'             => array('id'       => 'newsid'), 
    8687        ); 
     88        $this->_weight = 5; 
    8789        parent::__construct(); 
    8890    } 
  • OWR/DAO/News/Tags.php

    rb65617 r4ade32  
    8383            'news_relations_tags' => array('id'   => 'tid') 
    8484        ); 
     85        $this->_weight = 4; 
    8586        parent::__construct(); 
    8687    } 
  • OWR/DAO/Streams.php

    rb65617 r4ade32  
    100100        $this->_userRelations = array( 
    101101            'streams_relations'         => array('id' => 'rssid'), 
    102             'streams_relations_name'    => array('id' => 'rssid') 
     102            'streams_relations_name'    => array('id' => 'rssid'), 
     103            'news_relations'            => array('id' => 'rssid') 
    103104        ); 
    104105        $this->_relations = array( 
    105             'streams_contents'          => array('id' => 'rssid') 
     106            'streams_contents'          => array('id' => 'rssid'), 
     107            'news'                      => array('id' => 'rssid') 
    106108        ); 
     109        $this->_weight = 10; 
    107110        parent::__construct(); 
    108111    } 
    109112 
     113    /** 
     114     * Declare a stream as unavailable, ie timeout or unreachable 
     115     * 
     116     * @access public 
     117     * @author Pierre-Alain Mignot <contact@openwebreader.org> 
     118     */ 
    110119    public function declareUnavailable() 
    111120    { 
  • OWR/DAO/Streams/Contents.php

    rb65617 r4ade32  
    7575        $this->_uniqueFields = array('rssid'=>true); 
    7676        $this->_fields = array( 
    77             'src'       => array('required' => true, 'type' => \PDO::PARAM_STR), 
    78             'rssid'     => array('required' => true, 'type' => \PDO::PARAM_INT), 
    79             'contents'  => array('required' => true, 'type' => \PDO::PARAM_STR) 
     77            'src'                       => array('required' => true, 'type' => \PDO::PARAM_STR), 
     78            'rssid'                     => array('required' => true, 'type' => \PDO::PARAM_INT), 
     79            'contents'                  => array('required' => true, 'type' => \PDO::PARAM_STR) 
    8080        ); 
    8181        $this->_userRelations = array( 
    82             'streams_relations' => array('rssid'   => 'rssid') 
     82            'streams_relations'         => array('rssid'    => 'rssid'), 
     83            'streams_relations_name'    => array('rssid'    => 'rssid'), 
     84            'news_relations'            => array('rssid'    => 'rssid') 
    8385        ); 
    8486        $this->_relations = array( 
    85             'streams'           => array('rssid'   => 'id') 
     87            'streams'                   => array('rssid'    => 'id'), 
     88            'news'                      => array('rssid'    => 'rssid') 
    8689        ); 
     90        $this->_weight = 9; 
    8791        parent::__construct(); 
    8892    } 
  • OWR/DAO/Streams/Groups.php

    rb65617 r4ade32  
    7676        $this->_uniqueFields = array('name' => true); 
    7777        $this->_fields = array( 
    78             'id'    => array('required' => true, 'type' => \PDO::PARAM_INT), 
    79             'name'  => array('required' => true, 'type' => \PDO::PARAM_STR), 
    80             'uid'   => array('required' => true, 'type' => \PDO::PARAM_INT) 
     78            'id'                => array('required' => true, 'type' => \PDO::PARAM_INT), 
     79            'name'              => array('required' => true, 'type' => \PDO::PARAM_STR), 
     80            'uid'               => array('required' => true, 'type' => \PDO::PARAM_INT) 
    8181        ); 
    8282        $this->_userRelations = array( 
    83             'streams_relations' => array('id'   => 'gid') 
     83            'streams_relations' => array('id'       => 'gid') 
    8484        ); 
     85        $this->_weight = 6; 
    8586        parent::__construct(); 
    8687    } 
  • OWR/DAO/Streams/Relations.php

    rb65617 r4ade32  
    7575        $this->_uniqueFields = array('rssid'=>true); 
    7676        $this->_fields = array( 
    77             'gid'    => array('required' => true, 'type' => \PDO::PARAM_INT), 
    78             'rssid' => array('required' => true, 'type' => \PDO::PARAM_INT), 
    79             'uid'   => array('required' => true, 'type' => \PDO::PARAM_INT) 
     77            'gid'                       => array('required' => true, 'type' => \PDO::PARAM_INT), 
     78            'rssid'                     => array('required' => true, 'type' => \PDO::PARAM_INT), 
     79            'uid'                       => array('required' => true, 'type' => \PDO::PARAM_INT) 
    8080        ); 
    8181        $this->_relations = array( 
    82             'streams'           => array('rssid'    => 'id'), 
     82            'streams'                   => array('rssid'    => 'id'), 
    8383        ); 
    8484        $this->_userRelations = array( 
    85             'streams_groups'    => array('gid'      => 'id'), 
    86             'news_relations'    => array('rssid'    => 'rssid') 
     85            'streams_groups'            => array('gid'      => 'id'), 
     86            'streams_relations'         => array('rssid'    => 'rssid'), 
     87            'streams_relations_name'    => array('rssid'    => 'rssid'), 
     88            'news_relations'            => array('rssid'    => 'rssid') 
    8789        ); 
     90        $this->_weight = 8; 
    8891        parent::__construct(); 
    8992    } 
  • OWR/DAO/Streams/Relations/Name.php

    rb65617 r4ade32  
    7575        $this->_uniqueFields = array('rssid'=>true, 'name'=>true); 
    7676        $this->_fields = array( 
    77             'rssid' => array('required' => true, 'type' => \PDO::PARAM_INT), 
    78             'name'  => array('required' => true, 'type' => \PDO::PARAM_STR), 
    79             'uid'   => array('required' => true, 'type' => \PDO::PARAM_INT) 
     77            'rssid'                     => array('required' => true, 'type' => \PDO::PARAM_INT), 
     78            'name'                      => array('required' => true, 'type' => \PDO::PARAM_STR), 
     79            'uid'                       => array('required' => true, 'type' => \PDO::PARAM_INT) 
    8080        ); 
    8181        $this->_userRelations = array( 
    82             'streams_relations' => array('id'       => 'rssid') 
     82            'streams_relations'         => array('rssid'    => 'rssid'), 
     83            'news_relations'            => array('rssid'    => 'rssid') 
    8384        ); 
    8485        $this->_relations = array( 
    85             'streams'           => array('rssid'    => 'id') 
     86            'streams'                   => array('rssid'    => 'id'), 
     87            'streams_contents'          => array('rssid'    => 'rssid'), 
     88            'news'                      => array('rssid'    => 'rssid') 
    8689        ); 
     90        $this->_weight = 7; 
    8791        parent::__construct(); 
    8892    } 
  • OWR/DAO/Users.php

    rb65617 r4ade32  
    123123        ); 
    124124        $this->_relations = array( 
    125             'users_tokens'  => array('id'   => 'uid') 
     125            'users_tokens'              => array('id' => 'uid'), 
     126            'news_relations'            => array('id' => 'uid'), 
     127            'news_relations_tags'       => array('id' => 'uid'), 
     128            'news_tags'                 => array('id' => 'uid'), 
     129            'streams_relations'         => array('id' => 'uid'), 
     130            'streams_groups'            => array('id' => 'uid'), 
     131            'streams_relations_name'    => array('id' => 'uid') 
    126132        ); 
     133        $this->_weight = 14; 
    127134        parent::__construct(); 
    128135    } 
  • OWR/Object.php

    r48e84c r4ade32  
    213213     * @abstract 
    214214     * @author Pierre-Alain Mignot <contact@openwebreader.org> 
    215      * @param mixed $datas the datas to sanitize  
     215     * @param mixed $datas the datas to sanitize 
    216216     * @return mixed ? 
    217217     */ 
     
    231231    /** 
    232232     * Returns public properties of object passed by parameter as an associative array 
     233     * or return an array of multidimensional array 
    233234     * 
    234235     * @access public 
     
    249250            } 
    250251        } 
     252 
    251253        return $arr; 
    252254    } 
Note: See TracChangeset for help on using the changeset viewer.