Changeset 11709

Show
Ignore:
Timestamp:
08/24/07 12:45:27 (1 year ago)
Author:
piotras
Message:

Added create_database_blobdir public method and private routine ones.
Constructor accepts midgard_setup_config instead of midgard_config.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/midgard/data/midgard_setup_database.php

    r11565 r11709  
    1919{ 
    2020    private $midgard_config; 
     21    private $midgard_setup_config; 
    2122    private $config_name; 
    2223    private $connected; 
     
    2728     * @param   string          $config_name 
    2829     */ 
    29     public function __construct(midgard_config $config, $config_name = NULL) 
    30     { 
     30    public function __construct(midgard_setup_config &$setup_config, $config_name = NULL) 
     31    { 
     32        $this->midgard_setup_config = &$setup_config; 
     33        $config = &$setup_config->midgard_config; 
     34         
    3135        if($config->database == '') 
    3236            throw new midgard_setup_database_exception( 
     
    4549                _("Database password not defined in midgard_config"), 0); 
    4650 
    47         $this->midgard_config = $config; 
     51        $this->midgard_config = &$config; 
    4852        $this->config_name = $config_name; 
    4953    }     
     
    5256    { 
    5357 
     58    } 
     59 
     60    private function warn_ifnotdir($warn) 
     61    { 
     62        midgard_setup_ui_cli::warning(_("Can not create directory").$warn); 
     63        return FALSE; 
     64    } 
     65 
     66    private function warn_ifnotch($type, $warn) 
     67    { 
     68        midgard_setup_ui_cli::warning(_("Can not change permission").$type." on ".$warn); 
     69        return FALSE; 
     70    } 
     71 
     72    public function create_database_blobdir() 
     73    { 
     74        $dirs = array("0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"); 
     75        $subdirs = $dirs; 
     76 
     77        $old_umask = umask(); 
     78        umask(006); 
     79 
     80        /* check if midgard directory itself exists, if not , create it */ 
     81        $midgard_dir = MIDGARD_SETUP_DIRECTORY_VAR."/lib/midgard"; 
     82        if(!is_dir($midgard_dir)) 
     83        { 
     84                    if(!mkdir($midgard_dir, 0711, TRUE)) 
     85                { 
     86                umask($old_umask); 
     87                        return self::warn_ifnotdir($midgard_dir); 
     88                    } 
     89            } 
     90 
     91        /* check root directory for all blobs */ 
     92            $blobdir_root = $midgard_dir."/blobs"; 
     93            if(!is_dir($blobdir_root)) 
     94        { 
     95                    if(!mkdir($blobdir_root, 0711, TRUE)) 
     96                { 
     97                umask($old_umask); 
     98                        return self::warn_ifnotdir($blobdir_root); 
     99                    } 
     100            } 
     101 
     102        $blobdir_db = $blobdir_root."/".$this->midgard_config->database; 
     103 
     104            if(!is_dir($blobdir_db)) 
     105        { 
     106                    if(!mkdir($blobdir_db, 0711, TRUE)) 
     107                {    
     108                umask($old_umask); 
     109                        return self::warn_ifnotdir($blobdir_db); 
     110                    } 
     111            } 
     112 
     113        foreach($dirs as $dir) 
     114        { 
     115            $blobdir = $blobdir_db."/".$dir; 
     116 
     117            if(!is_dir($blobdir)) 
     118            { 
     119                if(!mkdir($blobdir, 0771, TRUE))  
     120                {    
     121                    umask($old_umask); 
     122                    return self::warn_ifnotdir($blobdir); 
     123                } 
     124            } 
     125                 
     126            if(!chown($blobdir, MIDGARD_SETUP_APACHE_USER)) 
     127            { 
     128                return self::warn_ifnotch("owner", $blobdir); 
     129            } 
     130 
     131            if(!chgrp($blobdir, MIDGARD_SETUP_APACHE_GROUP)) 
     132            { 
     133                return self::warn_ifnotch("group", $blobdir); 
     134            } 
     135             
     136            foreach($subdirs as $subdir) 
     137            { 
     138                $subblobdir = $blobdir."/".$subdir; 
     139                 
     140                if(!is_dir($subblobdir)) 
     141                { 
     142                    if(!mkdir($subblobdir, 0771, TRUE)) 
     143                    { 
     144                        umask($old_umask); 
     145                        return self::warn_ifnotdir($subblobdir); 
     146                    } 
     147                } 
     148                 
     149                if(!chown($subblobdir, MIDGARD_SETUP_APACHE_USER)) 
     150                { 
     151                    return self::warn_ifnotch("owner", $subblobdir); 
     152                } 
     153                 
     154                if(!chgrp($subblobdir, MIDGARD_SETUP_APACHE_GROUP)) 
     155                { 
     156                    return self::warn_ifnotch("group", $subblobdir); 
     157                } 
     158            } 
     159        } 
     160 
     161        umask($old_umask); 
     162        return TRUE; 
    54163    } 
    55164