tangra logo
   
[ class tree: tangra_lib ] [ index: tangra_lib ] [ all elements ]
 

Source for file tangra_module_release_category_dbc.class.php

Documentation is available at tangra_module_release_category_dbc.class.php

  1. <?php
  2.  
  3. // $Id$
  4.  
  5. /**
  6.  * Contains class Tangra_Module_Release_Category_DBC
  7.  *
  8.  * @package  tangra_lib
  9.  * @subpackage  modules_manager
  10.  */
  11.  
  12. /**
  13.  *
  14.  */
  15. require_once(TANGRA_MAIN_DIR.'interfaces/i_db_storable.class.php');
  16.  
  17.  
  18. /**
  19.  *
  20.  */
  21. require_once('tangra_module_release_category.class.php');
  22. /**
  23.  *
  24.  */
  25. require_once('tangra_module_category_dbc.class.php');
  26.  
  27.  
  28. /**
  29.  * Release - module category link DBC
  30.  *
  31.  * @package  tangra_lib
  32.  * @subpackage  modules_manager
  33.  */
  34.     /**
  35.      * Saves record
  36.      *
  37.      * @param DB_Connection $dbc 
  38.      * @return integer On success returns module ID, on failure - false
  39.      */
  40.     public function save(DB_Connection $dbc{
  41.         $ret false;
  42.  
  43.         if ($this->get_id()) {
  44.             $ret $this->update($dbc);
  45.         else {
  46.             $ret $this->insert($dbc);
  47.             $this->set_id($ret);
  48.         }
  49.  
  50.         return $ret;
  51.     }
  52.  
  53.  
  54.     /**
  55.      * Loads link by ID
  56.      *
  57.      * @param DB_Connection $dbc 
  58.      * @param integer $id 
  59.      * @return integer On success returns module ID, on failure - false
  60.      */
  61.     public function load_by_id(DB_Connection $dbc$id{
  62.         $ret false;
  63.  
  64.         $sql "select module_release, ".
  65.                         "category ".
  66.                     "from tmod_release_categories ".
  67.                     "where id = $id";
  68.         $rez $dbc->execute($sql);
  69.  
  70.         if (!$rez->is_eof()) {
  71.             $rez_obj $rez->fetch_object();
  72.  
  73.             $this->set_id($id);
  74.             $this->set_module_release($rez_obj->MODULE_RELEASE);
  75.             $this->set_category($rez_obj->CATEGORY);
  76.  
  77.             $ret $id;
  78.         }
  79.  
  80.         return $ret;
  81.     }
  82.  
  83.  
  84.     /**
  85.      * Inserts new record
  86.      *
  87.      * @param DB_Connection $dbc 
  88.      * @return integer On success returns module ID, on failure - false
  89.      * @internal
  90.      */
  91.     protected function insert(DB_Connection $dbc{
  92.         $ret false;
  93.  
  94.         $id $dbc->generate_id('tmod_release_categories_seq');
  95.  
  96.         $module_release $this->get_module_release();
  97.         $category $this->get_category();
  98.  
  99.         if ($id{
  100.             $sql "insert into tmod_release_categories (id, ".
  101.                                             "module_release, ".
  102.                                             "category ".
  103.                                           ") ".
  104.                                 "values ".
  105.                                           "($id,".
  106.                                           "$module_release".
  107.                                           "$category ".
  108.                                           ")";
  109.             $dbc->execute($sql);
  110.             $ret $id;
  111.         else {
  112.             throw new TE_Exception('ID not generated - tmod_release_categories_seq');
  113.         }
  114.  
  115.         return $ret;
  116.     }
  117.  
  118.  
  119.     /**
  120.      * Updates existing record
  121.      *
  122.      * @param DB_Connection $dbc 
  123.      * @return integer On success returns module ID, on failure - false
  124.      * @internal
  125.      */
  126.     protected function update(DB_Connection $dbc{
  127.         $id $this->get_id();
  128.  
  129.         $module_release $this->get_module_release();
  130.         $category $this->get_category();
  131.  
  132.         $sql "update tmod_release_categories set ".
  133.                                   "module_release = $module_release".
  134.                                   "category = $category ".
  135.                     "where id = ".$id;
  136.  
  137.         $dbc->execute($sql);
  138.         $ret $id;
  139.  
  140.  
  141.         return $ret;
  142.     }
  143.  
  144.  
  145.     /**
  146.      * Gets SQL for grid
  147.      *
  148.      * @param integer $mod_rel_id ID of module release
  149.      * @return string  SQL statement
  150.      */
  151.     public static function get_sql_for_grid($mod_rel_id{
  152.         tangra_if_not_int_throw_e($mod_rel_id);
  153.  
  154.         $sql "select rc.id, ".
  155.                         "c.hid ".
  156.                     "from tmod_release_categories rc, ".
  157.                             "tmod_categories c ".
  158.                     "where rc.module_release = $mod_rel_id and rc.category = c.id ".
  159.                     "order by c.hid asc";
  160.  
  161.         return $sql;
  162.     }
  163.  
  164.  
  165.     /**
  166.      * Gets count SQL for grid
  167.      *
  168.      * @param integer $mod_rel_id 
  169.      * @return string SQL statement
  170.      */
  171.     public static function get_sql_count_for_grid($mod_rel_id{
  172.         tangra_if_not_int_throw_e($mod_rel_id);
  173.  
  174.         $sql "select count(rc.id) as total_rows ".
  175.                     "from tmod_release_categories rc, ".
  176.                             "tmod_categories c ".
  177.                     "where rc.module_release = $mod_rel_id and rc.category = c.id ".
  178.                     "order by c.hid asc";
  179.  
  180.  
  181.         return $sql;
  182.     }
  183.  
  184.  
  185.     /**
  186.      * Loads categories options-labels map for form_field_select
  187.      *
  188.      * @param DB_Connection $dbc 
  189.      * @param integer $module_release ID of module release
  190.      * @return array 
  191.      */
  192.     public static function load_categories_ol_map(DB_Connection $dbc$module_release{
  193.         tangra_if_not_int_throw_e($module_release);
  194.  
  195.         $sql "select c.id, c.name from tmod_categories c where c.id not in (select rc.category from tmod_release_categories rc where rc.module_release = $module_release) order by c.hid asc";
  196.  
  197.         $rez $dbc->execute($sql);
  198.  
  199.         $ret array();
  200.         $ids array();
  201.  
  202.         while($rez_obj $rez->fetch_object()) {
  203.             array_push($ids$rez_obj->ID);
  204.             $ret['ol_map'][$rez_obj->ID$rez_obj->NAME;
  205.         }
  206.  
  207.         if ($ids{
  208.             $ret['ids'$ids;
  209.         }
  210.  
  211.         return $ret;
  212.     }
  213.  
  214.  
  215.     /**
  216.      * Loads categories for release
  217.      *
  218.      * @param DB_Connection $dbc 
  219.      * @param integer $module_release 
  220.      * @return array Array of Tangra_Module_Category_DBC objects
  221.      */
  222.     public static function load_categories_for_release(DB_Connection $dbc$module_release{
  223.         tangra_if_not_int_throw_e($module_release);
  224.  
  225.         $sql "select c.id as id from tmod_categories c, tmod_release_categories rc where rc.module_release = $module_release and rc.category = c.id";
  226.  
  227.         $rez $dbc->execute($sql);
  228.         $ret array();
  229.         while ($rez_obj $rez->fetch_object()) {
  230.             $tmp new Tangra_Module_Category_DBC();
  231.             $tmp->load_by_id($dbc$rez_obj->ID);
  232.             $ret[clone $tmp;
  233.         }
  234.  
  235.         return $ret;
  236.     }
  237.  
  238.  
  239.     /**
  240.      * Deletes link
  241.      *
  242.      * @param DB_Connection $dbc 
  243.      * @param integer $cat_id ID of the link
  244.      */
  245.     public static function delete(DB_Connection $dbc$cat_id{
  246.         tangra_if_not_int_throw_e($cat_id);
  247.  
  248.         $sql "delete from tmod_release_categories where id = $cat_id";
  249.         $dbc->execute($sql);
  250.     }
  251.  
  252.  
  253.     /**
  254.      * Deletes all links for release
  255.      *
  256.      * @param DB_Connection $dbc 
  257.      * @param integer $module_release_id Release ID
  258.      */
  259.     public static function delete_for_release(DB_Connection $dbc$module_release_id{
  260.         tangra_if_not_int_throw_e($module_release_id);
  261.  
  262.         $sql "delete from tmod_release_categories where module_release = $module_release_id";
  263.         $dbc->execute($sql);
  264.     }
  265.  
  266.  
  267.     /**
  268.      * Copy categories from one release to another
  269.      *
  270.      * @param DB_Connection $dbc 
  271.      * @param integer $from_id ID of source release
  272.      * @param integer $to_id ID of target release
  273.      */
  274.     public static function copy_categories(DB_Connection $dbc$from_id$to_id{
  275.         tangra_if_not_int_throw_e($from_id);
  276.         tangra_if_not_int_throw_e($to_id);
  277.  
  278.         $sql "select id from tmod_release_categories where module_release = $from_id";
  279.         $rez $dbc->execute($sql);
  280.         while ($rez_obj $rez->fetch_object()) {
  281.             $tmp_from new Tangra_Module_Release_Category_DBC();
  282.             $tmp_from->load_by_id($dbc$rez_obj->ID);
  283.             $tmp_from->set_id(0);
  284.             $tmp_from->set_module_release($to_id);
  285.             $tmp_from->save($dbc);
  286.         }
  287.     }
  288. }