[ Index ] |
|
Code source de Symfony 1.0.0 |
1 <?php 2 /* 3 * $Id: TstampTask.php 3076 2006-12-18 08:52:12Z fabien $ 4 * 5 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 6 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 7 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 8 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 9 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 10 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 11 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 12 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 13 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 14 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 15 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 16 * 17 * This software consists of voluntary contributions made by many individuals 18 * and is licensed under the LGPL. For more information please see 19 * <http://phing.info>. 20 */ 21 22 require_once 'phing/Task.php'; 23 24 /** 25 * Sets properties to the current time, or offsets from the current time. 26 * The default properties are TSTAMP, DSTAMP and TODAY; 27 * 28 * Based on Ant's Tstamp task. 29 * 30 * @author Michiel Rook <michiel.rook@gmail.com> 31 * @version $Revision: 1.6 $ 32 * @package phing.tasks.system 33 * @since 2.2.0 34 */ 35 class TstampTask extends Task 36 { 37 private $customFormats = array(); 38 39 private $prefix = ""; 40 41 /** 42 * Set a prefix for the properties. If the prefix does not end with a "." 43 * one is automatically added. 44 * @param prefix the prefix to use. 45 */ 46 public function setPrefix($prefix) 47 { 48 $this->prefix = $prefix; 49 50 if (!empty($this->prefix)) 51 { 52 $this->prefix.= "."; 53 } 54 } 55 56 /** 57 * Adds a custom format 58 * 59 * @param TstampCustomFormat custom format 60 */ 61 public function addFormat(TstampCustomFormat $cf) 62 { 63 $this->customFormats[] = $cf; 64 } 65 66 /** 67 * Create the timestamps. Custom ones are done before 68 * the standard ones. 69 * 70 * @throws BuildException 71 */ 72 public function main() 73 { 74 foreach ($this->customFormats as $cf) 75 { 76 $cf->execute($this); 77 } 78 79 $dstamp = strftime('%Y%m%d'); 80 $this->prefixProperty('DSTAMP', $dstamp); 81 82 $tstamp = strftime('%H%M'); 83 $this->prefixProperty('TSTAMP', $tstamp); 84 85 $today = strftime('%B %d %Y'); 86 $this->prefixProperty('TODAY', $today); 87 } 88 89 /** 90 * helper that encapsulates prefix logic and property setting 91 * policy (i.e. we use setNewProperty instead of setProperty). 92 */ 93 public function prefixProperty($name, $value) 94 { 95 $this->getProject()->setNewProperty($this->prefix . $name, $value); 96 } 97 } 98 99 class TstampCustomFormat 100 { 101 private $propertyName = ""; 102 private $pattern = ""; 103 private $locale = ""; 104 105 /** 106 * The property to receive the date/time string in the given pattern 107 * 108 * @param propertyName the name of the property. 109 */ 110 public function setProperty($propertyName) 111 { 112 $this->propertyName = $propertyName; 113 } 114 115 /** 116 * The date/time pattern to be used. The values are as 117 * defined by the PHP strftime() function. 118 * 119 * @param pattern 120 */ 121 public function setPattern($pattern) 122 { 123 $this->pattern = $pattern; 124 } 125 126 /** 127 * The locale used to create date/time string. 128 * 129 * @param locale 130 */ 131 public function setLocale($locale) 132 { 133 $this->locale = $locale; 134 } 135 136 /** 137 * validate parameter and execute the format. 138 * 139 * @param TstampTask reference to task 140 */ 141 public function execute(TstampTask $tstamp) 142 { 143 if (empty($this->propertyName)) 144 { 145 throw new BuildException("property attribute must be provided"); 146 } 147 148 if (empty($this->pattern)) 149 { 150 throw new BuildException("pattern attribute must be provided"); 151 } 152 153 if (!empty($this->locale)) 154 { 155 setlocale(LC_ALL, $this->locale); 156 } 157 158 $value = strftime($this->pattern); 159 $tstamp->prefixProperty($this->propertyName, $value); 160 161 if (!empty($this->locale)) 162 { 163 // reset locale 164 setlocale(LC_ALL, NULL); 165 } 166 } 167 } 168 ?>
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Fri Mar 16 22:42:14 2007 | par Balluche grâce à PHPXref 0.7 |