]> git.llucax.com Git - mecon/ai.git/blobdiff - lib/AI/GrupoSecciones.php
Se agrega nuevo campo para indicar si se debe abrir en ventana nueva.
[mecon/ai.git] / lib / AI / GrupoSecciones.php
index 589b1270d54d9c1e1503f9a5c55fdb60323a751e..eef18103d714156ece478a4ba9075f4e7d6a24b5 100644 (file)
@@ -77,7 +77,7 @@ class AI_GrupoSecciones extends AI_DBTreeObject {
     var $secciones = array();
 
     /**
-     * Antigedad (en d?s) de las noticias a mostrar.
+     * Antigüedad (en días) de las noticias a mostrar.
      *
      * @var    int $antiguedad
      * @access public
@@ -133,10 +133,37 @@ class AI_GrupoSecciones extends AI_DBTreeObject {
         $id = intval($this->grupo);
         extract($this->conf['secciones'], EXTR_PREFIX_ALL, 'cnf');
         $secciones = $db->getCol(
-            "SELECT $cnf_campo
-                FROM $cnf_base.$cnf_tabla
+           "SELECT $cnf_campo
+                FROM  $cnf_base.$cnf_tabla
                 WHERE $cnf_id = $id"
         );
+        //Busco los hijos si corresponde
+        //Agregado por gmeray
+        if($this->mostrar_hijos)
+        {
+            //hijos
+            $secciones = array_merge($secciones,
+                    $db->getCol(
+                        "SELECT GSS.$cnf_campo
+                            FROM    $cnf_base.$cnf_tabla GSS, $cnf_base.grupo_secciones GS
+                            WHERE   GSS.$cnf_id = GS.grupo
+                                AND GS.grupo_padre = $id"
+                    )
+            );
+            //nietos
+            $secciones = array_merge($secciones,
+                    $db->getCol(
+                        "SELECT GSS.$cnf_campo
+                            FROM    $cnf_base.$cnf_tabla GSS, $cnf_base.grupo_secciones GS, $cnf_base.grupo_secciones GS2
+                            WHERE   GSS.$cnf_id = GS.grupo
+                                AND GS.grupo_padre = GS2.grupo
+                                AND GS2.grupo_padre = $id"
+                    )
+            );
+            //Si hace falta agreguen los bisnietos.
+        }
+        //Fin Agregado
+        
         if (DB::isError($secciones)) {
             return $secciones;
         }
@@ -221,6 +248,38 @@ class AI_GrupoSecciones extends AI_DBTreeObject {
     // +X2C Operation 512
     /**
      * Obtiene un array con una lista de secciones.
+Sólo se obtienen las secciones que todavía no pertenecen a ningún grupo. Si se especifica un grupo, se agregan las secciones de ese grupo al <em>array</em> resultante.
+     *
+     * @param  DB $db Base de datos a usar para obtener los datos.
+     * @param  int $grupo Grupo del cual obtener las secciones.
+     *
+     * @return array
+     * @access public
+     * @static
+     */
+    function getSeccionesArray($db = null, $grupo = 0) // ~X2C
+    {
+        static $conf_dav, $conf_sec;
+        if (!$conf_dav or !$conf_sec) {
+            $conf = parse_ini_file(AI_GRUPOSECCIONES_CONFFILE, true);
+            $conf_dav = $conf['mecondav'];
+            $conf_sec = $conf['secciones'];
+        }
+        extract($conf_dav, EXTR_PREFIX_ALL, 'dav');
+        extract($conf_sec, EXTR_PREFIX_ALL, 'sec');
+               return $db->getAssoc(
+            "SELECT d.$dav_id, d.$dav_campo 
+                FROM      $dav_base.$dav_tabla as d
+                LEFT JOIN $sec_base.$sec_tabla AS s
+                ON        s.$sec_campo = d.$dav_id
+                WHERE     s.$sec_campo IS NULL
+                    OR    s.$sec_id = $grupo
+                ORDER BY  d.$dav_campo ASC");
+    }
+    // -X2C
+
+    /**
+     * Obtiene un array con una lista de todas las secciones.
      *
      * @param  DB $db Base de datos a usar para obtener los datos.
      *
@@ -228,18 +287,95 @@ class AI_GrupoSecciones extends AI_DBTreeObject {
      * @access public
      * @static
      */
-    function getSeccionesArray($db = null) // ~X2C
+    function getAllSeccionesArray($db = null)
     {
         static $conf;
         if (!$conf) {
             $conf = parse_ini_file(AI_GRUPOSECCIONES_CONFFILE, true);
             $conf = $conf['mecondav'];
         }
+        extract($conf, EXTR_PREFIX_ALL, 'dav');
+               return $db->getAssoc(
+            "SELECT d.$dav_id, d.$dav_campo 
+                FROM      $dav_base.$dav_tabla as d
+                ORDER BY  d.$dav_campo ASC");
+    }
+
+    /**
+     * Obtiene un array con una lista de las secciones ocultas.
+     *
+     * @param  DB $db Base de datos a usar para obtener los datos.
+     *
+     * @return array
+     * @access public
+     * @static
+     */
+    function getSeccionesOcultasArray($db = null)
+    {
+        static $conf;
+        if (!$conf) {
+            $conf = parse_ini_file(AI_GRUPOSECCIONES_CONFFILE, true);
+            $conf = $conf['ocultas'];
+        }
+        extract($conf, EXTR_PREFIX_ALL, 'ocu');
+               return $db->getCol("SELECT d.$ocu_id FROM $ocu_base.$ocu_tabla as d");
+    }
+
+    /**
+     * Establece las secciones ocultas.
+     *
+     * @param  DB $db Base de datos a usar para grabar los datos.
+     *
+     * @return Cantidad de secciones insertadas o PEAR_Error.
+     * @access public
+     * @static
+     */
+    function setSeccionesOcultas($db = null, $secciones)
+    {
+        static $conf;
+        if (!$conf) {
+            $conf = parse_ini_file(AI_GRUPOSECCIONES_CONFFILE, true);
+            $conf = $conf['ocultas'];
+        }
+        extract($conf, EXTR_PREFIX_ALL, 'ocu');
+               $res = $db->query("DELETE FROM $ocu_base.$ocu_tabla");
+        if (DB::isError($res)) {
+            return $res;
+        }
+        foreach ($secciones as $seccion) {
+                   $res = $db->query(
+                "INSERT INTO $ocu_base.$ocu_tabla VALUES ("
+                    . $db->quote($seccion) . ")");
+            if (DB::isError($res)) {
+                return $res;
+            }
+        }
+        return count($secciones);
+    }
+
+    // +X2C Operation 537
+    /**
+     * Obtiene el grupo al que pertenece una sección.
+     *
+     * @param  int $seccion Sección a buscar.
+     * @param  DB $db DB a usar.
+     *
+     * @return AI_GrupoSecciones
+     * @access public
+     * @static
+     */
+    function getGrupo($seccion, $db = null) // ~X2C
+    {
+        static $conf;
+        if (!$conf) {
+            $conf = parse_ini_file(AI_GRUPOSECCIONES_CONFFILE, true);
+            $conf = $conf['secciones'];
+        }
         extract($conf);
-               return $db->getAssoc("
-            SELECT   $id, $campo
-            FROM     $base.$tabla
-            ORDER BY $campo ASC");
+               return $db->getOne(
+            "SELECT  $id
+                FROM  $base.$tabla
+                WHERE $campo = " . $db->quote($seccion));
     }
     // -X2C