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

Source for file tangra_module_release_file_dbc.class.php

Documentation is available at tangra_module_release_file_dbc.class.php

  1. <?php
  2.  
  3. // $Id$
  4.  
  5. /**
  6.  * Contains class Tangra_Module_Release_File_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. require_once('tangra_module_release_file.class.php');
  21.  
  22. /**
  23.  * Tangra_Module_Release_File_DBC
  24.  *
  25.  * @package  tangra_lib
  26.  * @subpackage  modules_manager
  27.  */
  28.     /**
  29.      * Saves the record
  30.      *
  31.      * @param DB_Connection $dbc 
  32.      * @return integer On success returns module ID, on failure - false
  33.      */
  34.     public function save(DB_Connection $dbc{
  35.         $ret false;
  36.  
  37.         if ($this->get_id()) {
  38.             $ret $this->update($dbc);
  39.         else {
  40.             $ret $this->insert($dbc);
  41.             $this->set_id($ret);
  42.  
  43.         }
  44.  
  45.         return $ret;
  46.     }
  47.  
  48.  
  49.     /**
  50.      * Loads record by id
  51.      *
  52.      * @param DB_Connection $dbc 
  53.      * @param integer $id 
  54.      * @return integer On success returns module ID, on failure - false
  55.      */
  56.     public function load_by_id(DB_Connection $dbc$id{
  57.         $ret false;
  58.  
  59.         $sql "select file_path, ".
  60.                         "module_release ".
  61.                     "from tmod_release_files ".
  62.                     "where id = $id";
  63.         $rez $dbc->execute($sql);
  64.  
  65.         if (!$rez->is_eof()) {
  66.             $rez_obj $rez->fetch_object();
  67.  
  68.             $this->set_id($id);
  69.             $this->set_file_path(stripslashes($rez_obj->FILE_PATH));
  70.             $this->set_module_release($rez_obj->MODULE_RELEASE);
  71.  
  72.             $ret $id;
  73.         }
  74.  
  75.         return $ret;
  76.     }
  77.  
  78.  
  79.     /**
  80.      * Inserts new DB record
  81.      *
  82.      * @param DB_Connection $dbc 
  83.      * @return integer On success returns module ID, on failure - false
  84.      * @internal
  85.      */
  86.     protected function insert(DB_Connection $dbc{
  87.         $ret false;
  88.  
  89.         $id $dbc->generate_id('tmod_release_files_seq');
  90.  
  91.         $file_path addslashes($this->get_file_path());
  92.         $module_release $this->get_module_release();
  93.  
  94.         if ($id{
  95.             $sql "insert into tmod_release_files (id, ".
  96.                                             "file_path, ".
  97.                                             "module_release ".
  98.                                           ") ".
  99.                                 "values ".
  100.                                           "($id,".
  101.                                           "'$file_path', ".
  102.                                           "$module_release ".
  103.                                           ")";
  104.             $dbc->execute($sql);
  105.             $ret $id;
  106.         else {
  107.             throw new TE_Exception('ID not generated - tmod_release_files_seq');
  108.         }
  109.  
  110.         return $ret;
  111.     }
  112.  
  113.  
  114.     /**
  115.      * Updates existing DB record
  116.      *
  117.      * @param DB_Connection $dbc 
  118.      * @return integer On success returns module ID, on failure - false
  119.      * @internal
  120.      */
  121.     protected function update(DB_Connection $dbc{
  122.         $id $this->get_id();
  123.  
  124.         $file_path addslashes($this->get_file_path());
  125.         $module_release $this->get_module_release();
  126.  
  127.         $sql "update tmod_release_files set ".
  128.                           "file_path = '$file_path', ".
  129.                           "module_release = $module_release ".
  130.                     "where id = ".$id;
  131.  
  132.         $dbc->execute($sql);
  133.         $ret $id;
  134.  
  135.  
  136.         return $ret;
  137.     }
  138.  
  139.  
  140.     /**
  141.      * Gets SQL for grid
  142.      *
  143.      * @param integer $mod_rel_id Release ID
  144.      * @return string SQL statement
  145.      */
  146.     public static function get_sql_for_grid($mod_rel_id{
  147.         tangra_if_not_int_throw_e($mod_rel_id);
  148.  
  149.         $sql "select id, ".
  150.                         "file_path ".
  151.                     "from tmod_release_files ".
  152.                     "where module_release = $mod_rel_id ".
  153.                     "order by id desc";
  154.  
  155.         return $sql;
  156.     }
  157.  
  158.  
  159.     /**
  160.      * Gets count SQL for grid
  161.      *
  162.      * @param integer $mod_rel_id Release ID
  163.      * @return string SQL statement
  164.      */
  165.     public static function get_sql_count_for_grid($mod_rel_id{
  166.         tangra_if_not_int_throw_e($mod_rel_id);
  167.  
  168.         $sql "select count(id) as total_rows from tmod_release_files where module_release = $mod_rel_id";
  169.  
  170.         return $sql;
  171.     }
  172.  
  173.  
  174.     /**
  175.      * Deletes DB record
  176.      *
  177.      * @param DB_Connection $dbc 
  178.      * @param string $file_id ID of the record
  179.      */
  180.     public static function delete(DB_Connection $dbc$file_id{
  181.         tangra_if_not_int_throw_e($file_id);
  182.  
  183.         $sql "delete from tmod_release_files where id = $file_id";
  184.         $dbc->execute($sql);
  185.     }
  186.  
  187.  
  188.     /**
  189.      * Deletes DB record and the file
  190.      *
  191.      * @param DB_Connection $dbc 
  192.      * @param integer $file_id ID of the record
  193.      */
  194.     public static function delete_cascade(DB_Connection $dbc$file_id{
  195.         tangra_if_not_int_throw_e($file_id);
  196.  
  197.         $mod_release_file new Tangra_Module_Release_File_DBC();
  198.         if ($mod_release_file->load_by_id($dbc$file_id)) {
  199.             if (file_exists($mod_release_file->get_file_path())) {
  200.                 unlink($mod_release_file->get_file_path());
  201.             }
  202.  
  203.             Tangra_Module_Release_File_DBC::delete($dbc$file_id);
  204.         }
  205.     }
  206.  
  207.  
  208.     /**
  209.      * Deletes all records and files for release
  210.      *
  211.      * @param DB_Connection $dbc 
  212.      * @param integer $module_release_id Release ID
  213.      */
  214.     public static function delete_for_release(DB_Connection $dbc$module_release_id{
  215.         tangra_if_not_int_throw_e($module_release_id);
  216.  
  217.         $sql "select id from tmod_release_files where module_release = $module_release_id";
  218.         $rez $dbc->execute($sql);
  219.         while ($rez_obj $rez->fetch_object()) {
  220.             Tangra_Module_Release_File_DBC::delete_cascade($dbc$rez_obj->ID);
  221.         }
  222.     }
  223.  
  224.  
  225.     /**
  226.      * Gets paths of all files for release
  227.      *
  228.      * @param DB_Connection $dbc 
  229.      * @param integer $module_release_id Release ID
  230.      * @return array 
  231.      */
  232.     public static function select_all_for_module_release(DB_Connection $dbc$module_release_id{
  233.         tangra_if_not_int_throw_e($module_release_id);
  234.  
  235.         $sql "select file_path from tmod_release_files where module_release = $module_release_id";
  236.         $rez $dbc->execute($sql);
  237.         $ret array();
  238.         while ($rez_obj $rez->fetch_object()) {
  239.             $ret[$rez_obj->FILE_PATH;
  240.         }
  241.  
  242.         return $ret;
  243.     }
  244. }