Data.php 6.35 KB
Newer Older
Jonathan.Wage's avatar
Jonathan.Wage committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
<?php
/*
 *  $Id: Data.php 2552 2007-09-19 19:33:00Z Jonathan.Wage $
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * This software consists of voluntary contributions made by many individuals
 * and is licensed under the LGPL. For more information, see
 * <http://www.phpdoctrine.com>.
 */

/**
 * Doctrine_Data
 * 
 * Base Doctrine_Data class
 *
 * @package     Doctrine
28
 * @subpackage  Data
Jonathan.Wage's avatar
Jonathan.Wage committed
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187
 * @author      Jonathan H. Wage <jwage@mac.com>
 * @license     http://www.opensource.org/licenses/lgpl-license.php LGPL
 * @link        www.phpdoctrine.com
 * @since       1.0
 * @version     $Revision: 2552 $
 */
class Doctrine_Data
{
    /**
     * formats
     *
     * array of formats data can be in
     *
     * @var string
     */
    public $formats = array('csv', 'yml', 'xml');
    /**
     * format
     * 
     * the default and current format we are working with
     *
     * @var string
     */
    public $format = 'yml';
    /**
     * directory
     *
     * array of directory/yml paths or single directory/yml file
     *
     * @var string
     */
    public $directory = null;
    /**
     * models
     *
     * specified array of models to use
     *
     * @var string
     */
    public $models = array();
    /**
     * exportIndividualFiles
     *
     * whether or not to export data to individual files instead of 1
     *
     * @var string
     */
    public $exportIndividualFiles = false;
    /**
     * setFormat
     *
     * Set the current format we are working with
     * 
     * @param string $format 
     * @return void
     * @author Jonathan H. Wage
     */
    public function setFormat($format)
    {
        $this->format = $format;
    }
    /**
     * getFormat
     *
     * Get the current format we are working with
     * 
     * @return void
     * @author Jonathan H. Wage
     */
    public function getFormat()
    {
        return $this->format;
    }
    /**
     * getFormats 
     *
     * Get array of available formats
     * 
     * @author Jonathan H. Wage
     */
    public function getFormats()
    {
        return $this->formats;
    }
    /**
     * setDirectory
     *
     * Set the array/string of directories or yml file paths
     * 
     * @author Jonathan H. Wage
     */
    public function setDirectory($directory)
    {
        $this->directory = $directory;
    }
    /**
     * getDirectory
     *
     * Get directory to work with
     * 
     * @return void
     * @author Jonathan H. Wage
     */
    public function getDirectory()
    {
        return $this->directory;
    }
    /**
     * setModels
     *
     * Set the array of specified models to work with
     * 
     * @param string $models 
     * @return void
     * @author Jonathan H. Wage
     */
    public function setModels($models)
    {
        $this->models = $models;
    }
    /**
     * getModels
     *
     * Get the array of specified models to work with
     *
     * @return void
     * @author Jonathan H. Wage
     */
    public function getModels()
    {
        return $this->models;
    }
    /**
     * exportIndividualFiles 
     *
     * Set/Get whether or not to export individual files
     * 
     * @author Jonathan H. Wage
     */
    public function exportIndividualFiles($bool = null)
    {
        if ($bool !== null) {
            $this->exportIndividualFiles = $bool;
        }
        
        return $this->exportIndividualFiles;
    }
    /**
     * exportData
     *
     * Interface for exporting data to fixtures files from Doctrine models
     *
     * @param string $directory 
     * @param string $format 
     * @param string $models 
     * @param string $exportIndividualFiles 
     * @return void
     * @author Jonathan H. Wage
     */
188
    public function exportData($directory, $format = 'yml', $models = array(), $exportIndividualFiles = false)
Jonathan.Wage's avatar
Jonathan.Wage committed
189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207
    {
        $export = new Doctrine_Data_Export($directory);
        $export->setFormat($format);
        $export->setModels($models);
        $export->exportIndividualFiles($exportIndividualFiles);
        
        return $export->doExport();
    }
    /**
     * importData
     *
     * Interface for importing data from fixture files to Doctrine models
     *
     * @param string $directory 
     * @param string $format 
     * @param string $models 
     * @return void
     * @author Jonathan H. Wage
     */
208
    public function importData($directory, $format = 'yml', $models = array())
Jonathan.Wage's avatar
Jonathan.Wage committed
209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225
    {
        $import = new Doctrine_Data_Import($directory);
        $import->setFormat($format);
        $import->setModels($models);
        
        return $import->doImport();
    }
    /**
     * importDummyData
     *
     * Interface for importing dummy data to models
     * 
     * @param string $num 
     * @param string $models 
     * @return void
     * @author Jonathan H. Wage
     */
226
    public function importDummyData($num = 3, $models = array())
Jonathan.Wage's avatar
Jonathan.Wage committed
227 228 229 230
    {
        $import = new Doctrine_Data_Import();
        $import->setModels($models);
        
231
        return $import->doImportDummyData($num);
Jonathan.Wage's avatar
Jonathan.Wage committed
232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258
    }
    /**
     * isRelation
     *
     * Check if a fieldName on a Doctrine_Record is a relation, if it is we return that relationData
     * 
     * @param string $Doctrine_Record 
     * @param string $fieldName 
     * @return void
     * @author Jonathan H. Wage
     */
    public function isRelation(Doctrine_Record $record, $fieldName)
    {
        $relations = $record->getTable()->getRelations();
        
        foreach ($relations as $relation) {
            $relationData = $relation->toArray();
            
            if ($relationData['local'] === $fieldName) {
                return $relationData;
            }
            
        }
        
        return false;
    }
}