| 1 | AGAVI API CHANGELOG |
|---|
| 2 | =================== |
|---|
| 3 | |
|---|
| 4 | 0.11.0 (November 3, 2007) |
|---|
| 5 | |
|---|
| 6 | API Changes: |
|---|
| 7 | action/ |
|---|
| 8 | |
|---|
| 9 | CHG: |
|---|
| 10 | AgaviAction: |
|---|
| 11 | CHG: |
|---|
| 12 | ! execute* & validate* & handleError: They now take the parameters (in form of an AgaviRequestDataHolder) as parameter and shouldn't access the request parameters directly anymore |
|---|
| 13 | execute & validate: its not required to define (execute|validate) anymore, but instead you can define execute(Read|Write|...) for each input method you want to handle |
|---|
| 14 | ! getCredential: renamed to getCredentials() |
|---|
| 15 | ! getDefaultView: renamed to getDefaultViewName() |
|---|
| 16 | ADD: |
|---|
| 17 | isSimple: return true to put an action into simple mode |
|---|
| 18 | REM: |
|---|
| 19 | ! getRequestMethods: gone, this is now handled by the existance of (execute|validate)(Read|Write|...) methods |
|---|
| 20 | |
|---|
| 21 | REM: |
|---|
| 22 | AgaviActionStack & AgaviActionStackEntry: |
|---|
| 23 | ! superseded by AgaviExecutionContainer |
|---|
| 24 | |
|---|
| 25 | |
|---|
| 26 | config/ |
|---|
| 27 | The entire config management has been adjusted to support different |
|---|
| 28 | configuration formats. The new AgaviConfigValueHolder class represenets a |
|---|
| 29 | tree like data structure which gets created by the parsers for the specific |
|---|
| 30 | configuration formats. |
|---|
| 31 | |
|---|
| 32 | ADD: |
|---|
| 33 | AgaviConfig: |
|---|
| 34 | a new class for storing the configuration entries for the framework in a "registry" |
|---|
| 35 | |
|---|
| 36 | AgaviConfigParser |
|---|
| 37 | a new class representing an abstract configuration parser |
|---|
| 38 | |
|---|
| 39 | AgaviConfigValueHolder |
|---|
| 40 | a new class representing a configuration value (with attributes and childs or a value) |
|---|
| 41 | |
|---|
| 42 | REM: |
|---|
| 43 | IniConfigHandler: |
|---|
| 44 | ! is completely replaced by AgaviConfigHandler (which is independant of the config format) |
|---|
| 45 | |
|---|
| 46 | AgaviParameterParser: |
|---|
| 47 | ! removed, not needed anymore |
|---|
| 48 | |
|---|
| 49 | CHG: |
|---|
| 50 | AgaviConfigCache: |
|---|
| 51 | ADD: |
|---|
| 52 | parseConfig: a new method to parse a configuration file with the parser defined for its extension |
|---|
| 53 | CHG: |
|---|
| 54 | checkConfig: a new optional string parameter for specifying the context |
|---|
| 55 | clearCache: the directory parameter is now optional |
|---|
| 56 | getCacheName: a new optional string parameter for specifying the context |
|---|
| 57 | ! import: a string parameter specifying the the context as been inserted at position 2 (so once is now the 3. parameter) |
|---|
| 58 | |
|---|
| 59 | AgaviConfigHandler: |
|---|
| 60 | ADD: |
|---|
| 61 | getValidationFile: a new method to retrieve the validation file path |
|---|
| 62 | getItemParameters: a new method to get the parameters entries of a configuration node |
|---|
| 63 | orderConfigurations: a new method to order the configuration blocks and taking environment and context parameters into account |
|---|
| 64 | CHG: |
|---|
| 65 | execute: has the context name as a new string parameter (defaults to null) |
|---|
| 66 | ! initialize: now takes the new validation file path as the first parameter and the parameters as the second |
|---|
| 67 | ! literalize: returns the php value now instead of a php "code" representation |
|---|
| 68 | ! replaceConstants: doesn't return any constants anymore but instead values from the AgaviConfig registry |
|---|
| 69 | REM: |
|---|
| 70 | ! addReplacement: removed |
|---|
| 71 | |
|---|
| 72 | |
|---|
| 73 | controller/ |
|---|
| 74 | |
|---|
| 75 | ADD: |
|---|
| 76 | AgaviExecutionContainer: |
|---|
| 77 | Replace action stacks, fully encapsulate action executions |
|---|
| 78 | |
|---|
| 79 | AgaviOutputType: |
|---|
| 80 | Holds all information about an Output Type. |
|---|
| 81 | |
|---|
| 82 | REM: |
|---|
| 83 | FrontWebController & PageWebController: |
|---|
| 84 | ! removed, these cases are now handled by the general controller and the routing |
|---|
| 85 | |
|---|
| 86 | CHG: |
|---|
| 87 | AgaviController: |
|---|
| 88 | ADD: |
|---|
| 89 | loadFilters: new method to load the filters into a filterchain |
|---|
| 90 | getGlobalResponse: new method |
|---|
| 91 | getOutputType: retrieves an AgaviOutputType instance |
|---|
| 92 | CHG: |
|---|
| 93 | dispatch: now already implemented here and takes parameters as parameter |
|---|
| 94 | actionExists: renamed to resolveAction, the action name is now optional and there is 'auto resolving' in place |
|---|
| 95 | initialize: new parameters argument |
|---|
| 96 | getAction / getView: now named createActionInstance / createViewInstance |
|---|
| 97 | REM: |
|---|
| 98 | forward: removed |
|---|
| 99 | ! getGlobalModel & getModel: this is now handled by AgaviContext::getModel |
|---|
| 100 | ! getInstance: removed, now handled via the AgaviContext instance |
|---|
| 101 | ! newInstance: removed now handled via the AgaviContext instance |
|---|
| 102 | ! registerShutdownListener: removed |
|---|
| 103 | ! setExecutionFilterClassName: removed, this is now handled via the configuration |
|---|
| 104 | ! inCLI: removed |
|---|
| 105 | ! redirect: moved to AgaviResponse |
|---|
| 106 | |
|---|
| 107 | AgaviWebController: |
|---|
| 108 | CHG: |
|---|
| 109 | initalize: now takes parameters as second parameter |
|---|
| 110 | REM: |
|---|
| 111 | ! genUrl: removed, this is now done via AgaviRouting::gen() |
|---|
| 112 | getContentType: removed |
|---|
| 113 | setContentType: removed |
|---|
| 114 | |
|---|
| 115 | |
|---|
| 116 | core/ |
|---|
| 117 | ADD: |
|---|
| 118 | Agavi: |
|---|
| 119 | new class for bootstrapping agavi |
|---|
| 120 | |
|---|
| 121 | REM: |
|---|
| 122 | AgaviObject: |
|---|
| 123 | ! removed, not needed anymore |
|---|
| 124 | |
|---|
| 125 | CHG: |
|---|
| 126 | AgaviContext: |
|---|
| 127 | ADD: |
|---|
| 128 | getName: new method |
|---|
| 129 | getModel: moved from AgaviController |
|---|
| 130 | getLoggerManager: new method |
|---|
| 131 | getRouting: new method |
|---|
| 132 | getTranslationManager: new method |
|---|
| 133 | getFactoryInfo: new method |
|---|
| 134 | shutdown: new method |
|---|
| 135 | CHG: |
|---|
| 136 | ! getInstance: if you don't pass the profile parameter you have to set core.default_context in config |
|---|
| 137 | ! initialize: the overrides parameter is gone |
|---|
| 138 | REM: |
|---|
| 139 | ! getActionName: removed |
|---|
| 140 | ! getActionStack: removed |
|---|
| 141 | ! getModuleDirectory: removed |
|---|
| 142 | ! getModuleName: removed |
|---|
| 143 | ! getSecurityFilter: removed |
|---|
| 144 | |
|---|
| 145 | |
|---|
| 146 | database/ |
|---|
| 147 | All the database class names have been renamed to be proper camelcased (no more ...MySQL...) |
|---|
| 148 | |
|---|
| 149 | AgaviDatabase: |
|---|
| 150 | getDatabaseManager: new method |
|---|
| 151 | ! initialize: now takes the databasemanager as first parameter and the parameters as second (they were the only params) |
|---|
| 152 | |
|---|
| 153 | AgaviDatabaseManager: |
|---|
| 154 | ! initiliaze: now takes the context and optional parameters as parameter |
|---|
| 155 | |
|---|
| 156 | |
|---|
| 157 | date/ |
|---|
| 158 | New as part of the i18n features, handles various date parsing and formatting things as well as calendars |
|---|
| 159 | |
|---|
| 160 | |
|---|
| 161 | exception/ |
|---|
| 162 | AgaviException: |
|---|
| 163 | ! getName: removed |
|---|
| 164 | ! setName: removed |
|---|
| 165 | ! printStackTrace: format parameter gone and 3 new parameters now |
|---|
| 166 | |
|---|
| 167 | |
|---|
| 168 | filter/ |
|---|
| 169 | The filter handling has changed a little (there are different types of filters and interfaces for them) |
|---|
| 170 | |
|---|
| 171 | BasicSecurityFilter: |
|---|
| 172 | ! renamed to AgaviSecurityFilter |
|---|
| 173 | |
|---|
| 174 | AgaviFilter: |
|---|
| 175 | ! execute: now takes an AgaviResponse as additional parameter |
|---|
| 176 | |
|---|
| 177 | SecurityFilter: |
|---|
| 178 | ! is now an interface (AgaviISecurityFilter) |
|---|
| 179 | |
|---|
| 180 | |
|---|
| 181 | logging/ |
|---|
| 182 | The logging levels are now bitmasks so they can be combined using binary or. |
|---|
| 183 | AgaviAppender: |
|---|
| 184 | ! initialize: now takes an AgaviContext as first parameter and the parameters are now optional |
|---|
| 185 | getContext: new method |
|---|
| 186 | |
|---|
| 187 | AgaviFileAppender: |
|---|
| 188 | ! initialize: now takes an AgaviContext as first parameter and the parameters are now optional |
|---|
| 189 | ! _getHandle: renamed to getHandle |
|---|
| 190 | |
|---|
| 191 | AgaviLogger: |
|---|
| 192 | ALL: new class constant specifying all log levels |
|---|
| 193 | ! setPriority: renamed to setLevel |
|---|
| 194 | |
|---|
| 195 | AgaviLoggerManager: |
|---|
| 196 | ! initialize: not static anymore, now takes an AgaviContext as first parameter and optional parameters as second parameter |
|---|
| 197 | getContext: new method |
|---|
| 198 | ! getLogger: not static anymore |
|---|
| 199 | ! getLoggerNames: not static anymore |
|---|
| 200 | ! hasLogger: not static anymore |
|---|
| 201 | ! removeLogger: not static anymore |
|---|
| 202 | ! setLogger: not static anymore |
|---|
| 203 | ! log: not static anymore |
|---|
| 204 | ! shutdown: not static anymore |
|---|
| 205 | |
|---|
| 206 | AgaviMailAppender: |
|---|
| 207 | ! removed |
|---|
| 208 | |
|---|
| 209 | AgaviMessage: |
|---|
| 210 | __construct: priority renamed to level |
|---|
| 211 | ! setPriority: renamed to setLevel |
|---|
| 212 | ! getPriority: renamed to getLevel |
|---|
| 213 | |
|---|
| 214 | AgaviStderrAppender: |
|---|
| 215 | ! initialize: now takes an AgaviContext as first parameter and the parameters are now optional |
|---|
| 216 | |
|---|
| 217 | AgaviStdoutAppender: |
|---|
| 218 | ! initialize: now takes an AgaviContext as first parameter and the parameters are now optional |
|---|
| 219 | |
|---|
| 220 | |
|---|
| 221 | model/ |
|---|
| 222 | AgaviModel: |
|---|
| 223 | initialize: now takes parameters as optional second parameter |
|---|
| 224 | |
|---|
| 225 | SingletonModel: |
|---|
| 226 | ! removed, now handled by simply implementing AgaviISingletonModel |
|---|
| 227 | |
|---|
| 228 | |
|---|
| 229 | renderer/ |
|---|
| 230 | All new :) (handles stuff previously handled by the view) |
|---|
| 231 | |
|---|
| 232 | |
|---|
| 233 | request/ |
|---|
| 234 | ADD: |
|---|
| 235 | AgaviRequestDataHolder & AgaviWebRequestDataHolder: |
|---|
| 236 | Hold all request data - parameters, files, cookies, headers and so on |
|---|
| 237 | AgaviUploadedFile: |
|---|
| 238 | Represents an uploaded file |
|---|
| 239 | |
|---|
| 240 | CHG: |
|---|
| 241 | HTTPSRequest: |
|---|
| 242 | ! renamed to AgaviSecureWebRequest |
|---|
| 243 | |
|---|
| 244 | AgaviRequest: |
|---|
| 245 | ! all constants have been removed, these are now simply strings (read, write, ...), the error handling has been changed slightly |
|---|
| 246 | ! does not contain any request data directly anymore, has a |
|---|
| 247 | ADD: |
|---|
| 248 | getContext: new method |
|---|
| 249 | toggleLock: new method |
|---|
| 250 | getRequestDataHolder: gets the global request data holder |
|---|
| 251 | CHG: |
|---|
| 252 | initialize: not abstract anymore |
|---|
| 253 | shutdown: not abstract anymore |
|---|
| 254 | ! getMethod: returns string instead of int |
|---|
| 255 | ! setMethod: takes a string instead of an int as parameter |
|---|
| 256 | REM: |
|---|
| 257 | ! extractParameters: removed |
|---|
| 258 | ! newInstance: removed now handled via the AgaviContext instance |
|---|
| 259 | ! All error methods (getErrors(), hasError() and so on) moved into AgaviValidationManager |
|---|
| 260 | ! All parameter/file/cookie accessors gone, now handled by request data holders |
|---|
| 261 | |
|---|
| 262 | AgaviWebRequest: |
|---|
| 263 | ADD: |
|---|
| 264 | getUrlScheme: new method |
|---|
| 265 | getUrlHost: new method |
|---|
| 266 | getUrlPort: new method |
|---|
| 267 | getUrlAuthority: new method |
|---|
| 268 | getRequestUri: new method |
|---|
| 269 | getUrlPath: new method |
|---|
| 270 | getUrlQuery: new method |
|---|
| 271 | getUrl: new method |
|---|
| 272 | hasCookie: new method |
|---|
| 273 | REM: |
|---|
| 274 | ! setCookie: moved to AgaviWebResponse |
|---|
| 275 | |
|---|
| 276 | |
|---|
| 277 | response/ |
|---|
| 278 | New. Contains response data and sends it |
|---|
| 279 | |
|---|
| 280 | |
|---|
| 281 | translation/ |
|---|
| 282 | New as part of the i18n features |
|---|
| 283 | |
|---|
| 284 | |
|---|
| 285 | user/ |
|---|
| 286 | ADD: |
|---|
| 287 | AgaviISecurityUser: new interface for security user |
|---|
| 288 | AgaviRbacSecurityUser: new class |
|---|
| 289 | |
|---|
| 290 | REM: |
|---|
| 291 | BasicSecurityUser: merged into AgaviSecurityUser |
|---|
| 292 | |
|---|
| 293 | CHG: |
|---|
| 294 | AgaviUser: |
|---|
| 295 | ADD: |
|---|
| 296 | getStorageNamespace: new method |
|---|
| 297 | ! newInstance: removed now handled via the AgaviContext instance |
|---|
| 298 | |
|---|
| 299 | AgaviSecurityUser: |
|---|
| 300 | CHG: |
|---|
| 301 | ! hasCredential: renamed to hasCredentials |
|---|
| 302 | |
|---|
| 303 | |
|---|
| 304 | util/ |
|---|
| 305 | ADD: |
|---|
| 306 | AgaviArrayPathDefinition: |
|---|
| 307 | new class |
|---|
| 308 | AgaviAttributeHolder: |
|---|
| 309 | new class |
|---|
| 310 | AgaviDecimalFormatter: |
|---|
| 311 | new class |
|---|
| 312 | AgaviInflector: |
|---|
| 313 | new class |
|---|
| 314 | AgaviVirtualArrayPath: |
|---|
| 315 | new class |
|---|
| 316 | |
|---|
| 317 | CHG: |
|---|
| 318 | AgaviParameterHolder: |
|---|
| 319 | CHG: |
|---|
| 320 | getParameter: now supports array syntax in the name |
|---|
| 321 | hasParameter: now supports array syntax in the name |
|---|
| 322 | |
|---|
| 323 | AgaviToolkit: |
|---|
| 324 | ADD: |
|---|
| 325 | mkdir: new method |
|---|
| 326 | stringBase: new method |
|---|
| 327 | clearCache: new method |
|---|
| 328 | |
|---|
| 329 | REM: |
|---|
| 330 | ! extractClassName: removed |
|---|
| 331 | ! isSubClass: removed |
|---|
| 332 | ! classHeritage: removed |
|---|
| 333 | |
|---|
| 334 | REM: |
|---|
| 335 | ConversionPattern |
|---|
| 336 | ShutdownListener |
|---|
| 337 | |
|---|
| 338 | |
|---|
| 339 | validation/ |
|---|
| 340 | completely rewritten |
|---|
| 341 | |
|---|
| 342 | |
|---|
| 343 | view/ |
|---|
| 344 | ADD: |
|---|
| 345 | AgaviTemplateLayer, AgaviStreamTemplateLayer & AgaviFileTemplateLayer |
|---|
| 346 | These handle template layering |
|---|
| 347 | |
|---|
| 348 | CHG: |
|---|
| 349 | AgaviView: |
|---|
| 350 | ! all constants have been removed, simply use the strings now |
|---|
| 351 | ADD: |
|---|
| 352 | getResponse: new method |
|---|
| 353 | |
|---|
| 354 | CHG: |
|---|
| 355 | ! execute: now takes the parameters as array |
|---|
| 356 | ! initialize: takes optional attributes as second parameter |
|---|
| 357 | ! setDecoratorTemplate: the template parameter shouldn't contain the file extension, added second parameter to reenable that behaviour |
|---|
| 358 | setSlot: new parameter to specify additional parameters to the slot |
|---|
| 359 | ! setTemplate: the template parameter shouldn't contain the file extension, added second parameter to reenable that behaviour |
|---|
| 360 | |
|---|
| 361 | REM: |
|---|
| 362 | ! decorate: moved to AgaviRenderer |
|---|
| 363 | ! getEngine: moved to AgaviRenderer |
|---|
| 364 | ! importAttributes: removed |
|---|
| 365 | ! preRenderCheck: moved to AgaviRenderer |
|---|
| 366 | ! render: moved to AgaviRenderer |
|---|
| 367 | |
|---|
| 368 | REM: |
|---|
| 369 | FormPHPView: removed |
|---|
| 370 | PHPView: moved to AgaviPhpRenderer |
|---|
| 371 | SmartyView: moved to AgaviSmartyRenderer |
|---|
| 372 | XSLView: moved to AgaviXslRenderer |
|---|