13 * to license@zend.com so we can send you a copy immediately. |
13 * to license@zend.com so we can send you a copy immediately. |
14 * |
14 * |
15 * @category Zend |
15 * @category Zend |
16 * @package Zend_Tool |
16 * @package Zend_Tool |
17 * @subpackage Framework |
17 * @subpackage Framework |
18 * @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com) |
18 * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com) |
19 * @license http://framework.zend.com/license/new-bsd New BSD License |
19 * @license http://framework.zend.com/license/new-bsd New BSD License |
20 * @version $Id: Model.php 20851 2010-02-02 21:45:51Z ralph $ |
20 * @version $Id: Model.php 24593 2012-01-05 20:35:02Z matthew $ |
21 */ |
21 */ |
22 |
22 |
23 /** |
23 /** |
24 * @category Zend |
24 * @category Zend |
25 * @package Zend_Tool |
25 * @package Zend_Tool |
26 * @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com) |
26 * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com) |
27 * @license http://framework.zend.com/license/new-bsd New BSD License |
27 * @license http://framework.zend.com/license/new-bsd New BSD License |
28 */ |
28 */ |
29 class Zend_Tool_Project_Provider_Model extends Zend_Tool_Project_Provider_Abstract |
29 class Zend_Tool_Project_Provider_Model extends Zend_Tool_Project_Provider_Abstract |
30 { |
30 { |
31 |
31 |
65 if (!is_string($modelName)) { |
65 if (!is_string($modelName)) { |
66 throw new Zend_Tool_Project_Provider_Exception('Zend_Tool_Project_Provider_Model::createResource() expects \"modelName\" is the name of a model resource to check for existence.'); |
66 throw new Zend_Tool_Project_Provider_Exception('Zend_Tool_Project_Provider_Model::createResource() expects \"modelName\" is the name of a model resource to check for existence.'); |
67 } |
67 } |
68 |
68 |
69 $modelsDirectory = self::_getModelsDirectoryResource($profile, $moduleName); |
69 $modelsDirectory = self::_getModelsDirectoryResource($profile, $moduleName); |
|
70 |
|
71 if (!$modelsDirectory instanceof Zend_Tool_Project_Profile_Resource) { |
|
72 return false; |
|
73 } |
|
74 |
70 return (($modelsDirectory->search(array('modelFile' => array('modelName' => $modelName)))) instanceof Zend_Tool_Project_Profile_Resource); |
75 return (($modelsDirectory->search(array('modelFile' => array('modelName' => $modelName)))) instanceof Zend_Tool_Project_Profile_Resource); |
71 } |
76 } |
72 |
77 |
73 /** |
78 /** |
74 * _getModelsDirectoryResource() |
79 * _getModelsDirectoryResource() |
75 * |
80 * |
76 * @param Zend_Tool_Project_Profile $profile |
81 * @param Zend_Tool_Project_Profile $profile |
77 * @param string $moduleName |
82 * @param string $moduleName |
99 public function create($name, $module = null) |
104 public function create($name, $module = null) |
100 { |
105 { |
101 $this->_loadProfile(self::NO_PROFILE_THROW_EXCEPTION); |
106 $this->_loadProfile(self::NO_PROFILE_THROW_EXCEPTION); |
102 |
107 |
103 $originalName = $name; |
108 $originalName = $name; |
104 |
109 |
105 $name = ucwords($name); |
110 $name = ucwords($name); |
106 |
111 |
107 // determine if testing is enabled in the project |
112 // determine if testing is enabled in the project |
108 $testingEnabled = false; //Zend_Tool_Project_Provider_Test::isTestingEnabled($this->_loadedProfile); |
113 $testingEnabled = false; //Zend_Tool_Project_Provider_Test::isTestingEnabled($this->_loadedProfile); |
109 $testModelResource = null; |
114 $testModelResource = null; |
110 |
115 |
111 // Check that there is not a dash or underscore, return if doesnt match regex |
116 // Check that there is not a dash or underscore, return if doesnt match regex |
112 if (preg_match('#[_-]#', $name)) { |
117 if (preg_match('#[_-]#', $name)) { |
113 throw new Zend_Tool_Project_Provider_Exception('Model names should be camel cased.'); |
118 throw new Zend_Tool_Project_Provider_Exception('Model names should be camel cased.'); |
114 } |
119 } |
115 |
120 |
116 if (self::hasResource($this->_loadedProfile, $name, $module)) { |
121 if (self::hasResource($this->_loadedProfile, $name, $module)) { |
117 throw new Zend_Tool_Project_Provider_Exception('This project already has a model named ' . $name); |
122 throw new Zend_Tool_Project_Provider_Exception('This project already has a model named ' . $name); |
118 } |
123 } |
119 |
124 |
120 // get request/response object |
125 // get request/response object |
121 $request = $this->_registry->getRequest(); |
126 $request = $this->_registry->getRequest(); |
122 $response = $this->_registry->getResponse(); |
127 $response = $this->_registry->getResponse(); |
123 |
128 |
124 // alert the user about inline converted names |
129 // alert the user about inline converted names |
125 $tense = (($request->isPretend()) ? 'would be' : 'is'); |
130 $tense = (($request->isPretend()) ? 'would be' : 'is'); |
126 |
131 |
127 if ($name !== $originalName) { |
132 if ($name !== $originalName) { |
128 $response->appendContent( |
133 $response->appendContent( |
129 'Note: The canonical model name that ' . $tense |
134 'Note: The canonical model name that ' . $tense |
130 . ' used with other providers is "' . $name . '";' |
135 . ' used with other providers is "' . $name . '";' |
131 . ' not "' . $originalName . '" as supplied', |
136 . ' not "' . $originalName . '" as supplied', |
132 array('color' => array('yellow')) |
137 array('color' => array('yellow')) |
133 ); |
138 ); |
134 } |
139 } |
135 |
140 |
136 try { |
141 try { |
137 $modelResource = self::createResource($this->_loadedProfile, $name, $module); |
142 $modelResource = self::createResource($this->_loadedProfile, $name, $module); |
138 |
143 |
139 if ($testingEnabled) { |
144 if ($testingEnabled) { |
140 // $testModelResource = Zend_Tool_Project_Provider_Test::createApplicationResource($this->_loadedProfile, $name, 'index', $module); |
145 // $testModelResource = Zend_Tool_Project_Provider_Test::createApplicationResource($this->_loadedProfile, $name, 'index', $module); |